fastjson 解析报错 com.alibaba.fastjson.JSONException: create instance error…
报错原始代码
public class A{undefined
private String haha;
private int gogo;
private B bb;
public class B {undefined
private String name;
private int price;
}
}
修改后的代码
B嵌套在A里,那么我们要声明内嵌类static属性, 如下(这样问题解决)
public class A{undefined
private String haha;
private int gogo;
private B bb;
public static class B{undefined
private String name;
private int price;
}
}
这个问题主要是因为Java内部类和嵌套类的实现机制造成的.
静态的内部类叫做嵌套类,那么两者有什么区别呢?
一般的内部类虽然在源代码中没有写,但是编译后会看到里面多了一个指向外部类的引用,如果使用内部类进行json序列化,会因为找不到它的外部类而报异常,而嵌套类因为是静态的,里面没有默认的外部类的引用,即使没有外部类的对象也能够使用,因此在json转换的时候不会报错。
会有序列化问题
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class xxx and no properties discovered to create BeanSerializer
可以在实体类内部内类上(B类上面)面加注解
@JsonIgnoreProperties(value = { “hibernateLazyInitializer”, “handler” })