• fastJson Gson对比及java序列化问题


    一个案例

    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

  • 相关阅读:
    Jquery开发技巧汇总
    (转)
    C#中的委托和时间
    asp.net中like 使用参数化(转)
    省市选择
    安卓对话框
    z转自 西西吹雪
    winform控件验证技术(转)
    C#获取网卡Mac地址 .(转)
    关于GDI+错误的修正
  • 原文地址:https://www.cnblogs.com/yszzu/p/9412353.html
Copyright © 2020-2023  润新知