java fastjson 相关

前两天在排查一个问题的时候,用一个子类继承父类的字段,同时子类还有自己的字段。但是返回给前端的时候很奇怪,父类的字段都有,就是子类自己的字段没有。然后看了好久都没有看通,找了一个老程序员一下就想到是后端将对象传给前端的时候会进行对象序列化为json,此时对应的字段必须要有get方法。而当前端将对象传给后端的时候,要想序列化为对象成功就必须要有正确的set方法,否则也是不能成功的。
关于json序列化的原理:
于是我找了下这几个库的序列化原理:

jackson和fastjson的原理

在序列化的时候,先利用反射找到对象类的所有get方法,接下来去get,然后小写化,作为json的每个key值,而get方法的返回值作为value。接下来再反射field,添加到json中。

gson

没有找到通俗的讲法,不过感觉应该就和getter方法无关吧。
所以,可以看大我们的AjaxJson类中存在这样一个getJsonStr,因此,jsonStr就作为key,序列化到json中了。

当然在jackson中,提供了相应的annotation,可以把这类方法忽略掉。在方法前加上@JsonIgnore 即可
对于gson的详解参考[2]

参考:
[1] https://www.cnblogs.com/Sinte-Beuve/p/7270782.html
[2] http://www.importnew.com/16638.html

你可能感兴趣的:(java fastjson 相关)