内容纲要
使用fastjson中的toJavaObject方法,将JSONObject转化为实体类对象。
报错com.alibaba.fastjson.JSONException: can not get javaBeanDeserializer. java.lang.String
经排查,由于JSONObject中有key的value也是JSON格式的,而实体类中对应的字段是String格式,并且实体类由于是进行了数据库表结构映射,无法将字段类型更改为JSON格式,且由于特殊原因,无法对实体类进行多层子类嵌套关联,所以需要进行多一层转化操作。
实体类:
public class User {
// 姓名
String name;
// 科目
String subject;
}
转化过程:
JSONObject obj = new JSONObject();
obj.put("id","123");
obj.put("score","100");
JSONObject params = new JSONObject();
params.put("name","zhangsan");
params.put("subject",obj);
// 变更前
User user = params.toJavaObject(User.class);
// 变更后
User user = JSON.parseObject(JSON.toJSONString(params), User.class);