为啥fastjson只支持序列化属性的get方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥fastjson只支持序列化属性的get方法相关的知识,希望对你有一定的参考价值。
参考技术A 很简单,你修改getset方法就行了,下面是例子import com.alibaba.fastjson.JSON;enum Color RED(1), BLUE(2), GREEN(3); int code; Color(int code) this.code = code; public int getCode() return code; public static Color codeOf(int code) for (Color c : Color.values()) if (c.getCode() == code) return c; return null; public class Bean private String name; private Color color; public String getName() return name; public void setName(String name) this.name = name; public int getColor() return color.code; public void setColor(int color) this.color = Color.codeOf(color); public static void main(Stringargs) Bean b = new Bean(); b.setName("hello"); b.setColor(Color.RED.getCode()); String str = JSON.toJSONString(b); System.out.println(str); b = JSON.parseObject(str, Bean.class); System.out.println(b.getName() + "#" + b.getColor()); 参考技术B get方法才是获得数据的方法,其他方法没意义吧fastJson反序列化参数为null的问题
fastJson反序列化为类对象时,反序列化赋值的属性只会是你构造器上写的属性。
所以部分属性值为null的原因是属性没有加在构造器上的原因。
直接加个无参数的默认构造器即可解决。或者把null属性加构造器上。
如下图
基类的两个属性不会被反序列化赋值!需要加上默认构造器如下图。
以上是关于为啥fastjson只支持序列化属性的get方法的主要内容,如果未能解决你的问题,请参考以下文章
[Java安全]Fastjson>=1.2.36$ref引用可触发get方法分析