关于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

可以将所有字段转换,字段名不区分大小写
关于fastjson与fastjson2中toJava操作的区别_第1张图片

2. fastjson2

只会装换字段名完全相同的字段,严格区分大小写
关于fastjson与fastjson2中toJava操作的区别_第2张图片

三、解决方案

统一字段命名,若系统较为复杂,可根据需要部分使用fastjson,部分使用fastjson2

注:除JSONObject的toJavaObject,JSONArray的toJavaList也一样

你可能感兴趣的:(java,json)