关于fastjson与fastjson2中toJava操作的区别
关于fastjson与fastjson2中toJava操作的区别
- 一、场景
- 二、 区别
- 1、前置条件
- 2、对比
- 1. fastjson
- 2. fastjson2
- 三、解决方案
一、场景
在Java中会有将json转为实体类的需求,其中fastjson是一个常用的选择,今天在升级项目依赖的过程中,将fastjson从 1 升级到 2 ,出现了转换后缺值的问题,排查到原因后特此记录。
二、 区别
1、前置条件
实体类采用驼峰命名法,变量名中有大写字母
private String msgType;
private String msgTime;
private String msgId;
json中使用纯小写key的形式(为了对比msgId也采用驼峰命名)
JSONObject json = new JSONObject();
json.put("msgId", "abc");
json.put("msgtype", "image");
json.put("msgtime", "12643634578");
2、对比
1. fastjson
可以将所有字段转换,字段名不区分大小写
2. fastjson2
只会装换字段名完全相同的字段,严格区分大小写
三、解决方案
统一字段命名,若系统较为复杂,可根据需要部分使用fastjson,部分使用fastjson2
注:除JSONObject的toJavaObject,JSONArray的toJavaList也一样