一个案例

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

 public class XJSONTest {

     public static void main(String[] args) {
String inStr = "{\"isSuccess\":true}"; // Google Gson
Gson gson = new Gson();
Result result = gson.fromJson(inStr, Result.class);
System.out.println(result.getIsSuccess()); //alibaba FastJson
Result result2 = JSON.parseObject(inStr, Result.class);
System.out.println(result2.getIsSuccess());
}
} class Result {
Boolean isSuccess; public Boolean getIsSuccess() {
return isSuccess;
}
}

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

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

原因分析:

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

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

fastJson Gson对比及java序列化问题的更多相关文章

  1. Android总结之json解析(FastJson Gson 对比)[申明:来源于网络]

    Android总结之json解析(FastJson Gson 对比)[申明:来源于网络] 地址:http://blog.csdn.net/u014031072/article/details/5392 ...

  2. Android总结之json解析(FastJson Gson 对比)

    前言: 最近为了统一项目中使用的框架,发现项目中用到了两种json解析框架,他们就是当今非常主流的json解析框架:google的Gson 和阿里巴巴的FastJson,为了废除其中一个所以来个性能和 ...

  3. 常用json解析库比较及选择 fastjson & gson

    一.常用json解析库比较及选择 1.简介 fastjson和gson是目前比较常用的json解析库,并且现在我们项目代码中,也在使用这两个解析库. fastjson 是由阿里开发的,号称是处理jso ...

  4. java序列化框架(protobuf、thrift、kryo、fst、fastjson、Jackson、gson、hessian)性能对比

     我们为什么要序列化 举个栗子:下雨天我们要打伞,但是之后我们要把伞折叠起来,方便我们存放.那么运用到我们java中道理是一样的,我们要将数据分解成字节流,以便存储在文件中或在网络上传输,这叫序列 ...

  5. [java]序列化框架性能对比(kryo、hessian、java、protostuff)

    序列化框架性能对比(kryo.hessian.java.protostuff) 简介:   优点 缺点 Kryo 速度快,序列化后体积小 跨语言支持较复杂 Hessian 默认支持跨语言 较慢 Pro ...

  6. Protocol Buffer序列化对比Java序列化.

    初识 Protocol Buff是谷歌推出的一种序列化协议. 而Java序列化协议也是一种协议. 两者的目的是, 将对象序列化成字节数组, 或者说是二进制数据, 那么他们之间有什么差异呢. proto ...

  7. hadoop序列化机制与java序列化机制对比

    1.采用的方法: java序列化机制采用的ObjectOutputStream 对象上调用writeObject() 方法: Hadoop 序列化机制调用对象的write() 方法,带一个DataOu ...

  8. (记录)Jedis存放对象和读取对象--Java序列化与反序列化

    一.理论分析 在学习Redis中的Jedis这一部分的时候,要使用到Protostuff(Protobuf的Java客户端)这一序列化工具.一开始看到序列化这些字眼的时候,感觉到一头雾水.于是,参考了 ...

  9. Json 工具介绍 fastjson gson jackson

    1. fastjson fastjson是一个Java语言编写的高性能功能完善的JSON库.它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致, 是目前Java语言中最快的J ...

随机推荐

  1. Unity中的ShaderToys——将大神们写的shader搬到unity中来吧

    http://lib.csdn.net/article/unity3d/38699 这篇文章翻译自国外的一篇文章(这里是原文链接),正在使用unity的你是否在shader toy上发现很多牛逼哄哄的 ...

  2. JAVA中重写equals()方法为什么要重写hashcode()方法说明

    重写hashCode()时最重要的原因就是:无论何时,对同一个对象调用hashCode()都应该生成同样的值.如果在将一个对象用put()方法添加进HashMap时产生一个hashCode()值,而用 ...

  3. Wireshark抓取本地Tcp包(任何数据包)

    没有任何一个程序员在做项目的时候不会遇到网络编程的问题,要解决这些问题除了对各种网络协议深入了解之外,还需要掌握各种网络分析工具的用法,不用多说wireshark绝对是这方面的翘楚,可惜的是,wire ...

  4. 7.JasperReports学习笔记7-applet打印

    转自:http://www.blogjava.net/vjame/archive/2013/10/12/404908.html 打包applet的class和所需的jar包,并加上数字签名 要运行打印 ...

  5. 关于audio.js的研究

    ——杂言:audio.js结合使用html5的audio组件实现了音频的原位播放功能.虽然项目里已经使用一段时间了,不过我是最近才开始有所接触,惭愧.个人见解若有不对,请帮忙纠正,谢谢. 官方相关链接 ...

  6. 6.7 root和user之间的切换

  7. oracle环境变量

    1---此部分引自http://hi.baidu.com/jason_xux/item/1f44681d356927fa756a8480  感谢 ORA_NLS33 环境变量ora_nls33定义'l ...

  8. 【转】Lucene不同版本中Field的Keyword、UnIndex,导致lucene 建立索引总是报错 急!!

    lucene 建立索引 总是报错 急!! http://zhidao.baidu.com/link?url=iaVs9JH4DfN6iwaWImt7VMJENWCWGGaWFGPjqhUw_jz7Fs ...

  9. angular使用base64的encode和decode

    var app = angular.module("encodeDecode", []); app.controller("encodeDecodeCtrl", ...

  10. Mathematics Base - 期望、方差、协方差、相关系数总结

    参考:<深度学习500问> 期望 ​在概率论和统计学中,数学期望(或均值,亦简称期望)是试验中每次可能结果的概率乘以其结果的总和.它反映随机变量平均取值的大小. 线性运算: \(E(ax+ ...