内部类反序列化问题(fastjson exception: create instance error)
来源:互联网 发布:js float 保留两位小数 编辑:程序博客网 时间:2024/06/16 22:31
一、问题
项目开发过程中遇到了JSON反序列化问题(JSONException: create instance error),问题如下:
...com.alibaba.fastjson.JSONException: create instance error, class com.test.xiaofan.test.ClassA$ClassB...
由问题可见,fastjson反序列化时尝试创建ClassA的内部内ClassB失败。测试内部类声明如下:
@Datapublic class ClassA { private String filedA1; private String fieldA2; private List<ClassB> fieldA3s; @Data public class ClassB { private String fieldB1; private String filedB2; }}
测试代码如下:
public class TestA { @Test public void testParseA(){ String str = "{\"fieldA2\":\"test field A2\",\"fieldA3s\":[{\"fieldB1\":\"test field B1\",\"filedB2\":\"test " + "field B2\"}],\"filedA1\":\"test field A1\"}\n"; ClassA classA = JSON.parseObject(str, ClassA.class); System.out.println(JSON.toJSONString(classA)); } @Test public void testParseB() { String str = "{\"fieldB1\":\"test field B1\",\"filedB2\":\"test field B2\"}"; ClassB classB = JSON.parseObject(str, ClassB.class); System.out.println(JSON.toJSONString(classB)); }
二、嵌套类与内部类
查看了fastjson官方问题解释:点击查看,问题本质为内部类无法实例化,导致fastjson反序列化失败。
点击查看:《Java嵌套类与内部类》
三、解决方案
由Java嵌套类与内部类一文分析可知,非静态成员嵌套类的实例化依赖于外部类实例,而静态嵌套类的实例化不依赖于外部类,将内部类改为静态嵌套类即可。
阅读全文
0 0
- 内部类反序列化问题(fastjson exception: create instance error)
- fastjson反序列化 create instance error
- fastjson范型解析的时候报无法解析内部类的错误create instance error, class com.example.kodulf.utilsdemo.entity.City$Flow
- java fastjson反序列化问题记录
- fastjson反序列化
- FastJson解析处理内部类问题
- fastjson使用(四) -- 反序列化
- fastjson反序列化漏洞分析
- Fastjson反序列化漏洞分析
- FastJson自定义Date类型反序列化
- fastJson解析报错com.alibaba.fastjson.JSONException: create instance error, class json.TestFJson$A
- fastJson解析报错com.alibaba.fastjson.JSONException: create instance error...
- fastJson解析报错com.alibaba.fastjson.JSONException: create instance error...
- fastjson反序列化一个字段有多个set方法时的问题
- fastjson对于yyyy-MM-dd HH:mm格式的反序列化问题
- springmvc 中使用fastjson 反序列化json,导致时区相差的问题
- 使用Fastjson序列化与反序列化对象
- FastJson解析实例--对象序列化和反序列化
- MOOS例程HelloWorld-详细注释
- 2017 10 08 NOIP2017模拟赛
- 数据结构顺序表实现
- 10个重要的Linux ps命令实战
- lua脚本学习9
- 内部类反序列化问题(fastjson exception: create instance error)
- 使用VS Code编译运行C/C++程序
- 在CentOS7上安装MongoDB
- 3. Spring Boot 初步了解
- Poj 2970 The lazy programmer(贪心)
- SwitchHosts使用
- Python 鼠标事件
- java二分法查找
- 学习jsp基础