fastjson和jackson在反序列化的时候都是遍历类里的get方法进行序列化。gson是遍历类的属性,设置值后,反序列化json串。
fastjson会有反序列化的问题。
如果类里面的属性类型是自定义的类,自定义类有子类,则子类不会被反序列化。
为了解决这个问题有了AuToType。
开启了AutoType。
JSON.toJSONString(store,SerializerFeature.WriteClassName);
输出结果带@type
{
"@type":"com.hollis.lab.fastjson.test.Store",
"fruit":{
"@type":"com.hollis.lab.fastjson.test.Apple",
"price":0.5
},
"name":"Hollis"
}
自从有了AutoType就有很多的黑客去通过@type特性去攻击数据连接的类库。
攻击详细介绍
jackson、fastjson、gson性能介绍
总结
虽然fastjson快,但是使用jackson的公司比较多。