一个案例

POJO没有set方法, 造成反序列化时出现NPE问题。实际场景:POJO是第三方提供的,final

 1 public class XJSONTest {
 2 
 3     public static void main(String[] args) {
 4         String inStr = "{\"isSuccess\":true}";
 5 
 6         // Google Gson
 7         Gson gson = new Gson();
 8         Result result = gson.fromJson(inStr, Result.class);
 9         System.out.println(result.getIsSuccess());
10 
11         //alibaba FastJson
12         Result result2 = JSON.parseObject(inStr, Result.class);
13         System.out.println(result2.getIsSuccess());
14     }
15 }
16 
17 class Result {
18     Boolean isSuccess;
19 
20     public Boolean getIsSuccess() {
21         return isSuccess;
22     }
23 }

运行结果:Gson的输出true, FastJson输出null,   后面的业务逻辑使用getIsSuccess时很容易出现NPE

FastJson坑真多, 上次遇到一个byte[]数组自动base64编码,还有各种安全问题, 。。。

 

原因分析:

Gson序列化时直接操作field, FastJson操作的是get set方法

RPC框架中的序列化: Hession也是操作field

 

相关文章:

  • 2021-08-06
  • 2021-11-17
  • 2022-12-23
  • 2022-12-23
  • 2021-09-30
  • 2021-06-22
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-11-26
  • 2021-11-04
  • 2021-11-21
  • 2021-06-24
  • 2021-09-18
相关资源
相似解决方案