首先我遇到的问题是这样子的,我使用Gson解析对象时,我的部分字段因为没有赋值,导致结果是没有赋值的字段,直接没有被解析在结果中,就是少了字段的意思,结果如下:
{"name":"first","root":{"id":"1545126365117876638","rule":[{"id":1,"srcAddr":[{"name":"Any"}],
"srcHost":"","dstRange":[{"min":"174987836","max":"174987836"},
{"min":"1996554503","max":"1996554503"}]}]}}
那怎么办呢,百度------->一般的情况是下面这样的
Gson gson = new GsonBuilder().serializeNulls().create();
就是利用GsonBuilder用构造特殊的Gson对象
然后调用gson的toJson(Object obj)方法实现将对象转成json字符串的功能,但结果是下面这样的:
{"name":"first","root":{"id":"1545126365117876638","rule":
[{"id":1,"srcAddr":[{"name":"Any"}],"srcHost":null,
"srcSubnet":null,"srcRange":null,
"dstAddr":null,"dstHost":null,"dstSubnet":null,"dstRange":[{"min":"174987836","max":"174987836"},
{"min":"1996554503","max":"1996554503"}],"user":null,
"userGroup":null,"service":null,"application":null,"srcZone":null,
"ingressIf":null,"dstZone":null,"egressIf":null,"vlan":null,"tos":null}]}}
可以看到很多值被自动赋值为null,就很麻木,用可视化工具看一下:
很明显这还不是我想要的结果,然后再百度:
结合他的方法,找了个简单一点的自定义适配器的方法,试了一下,嗯有点效果,就是实体类里面的String类型全被转换成
空字符串:“”
But,实体类里面的其他类型的变量还是被解析为null,就是变量本身是没有被初始化的,于是我在实体类里给其赋默认值试了一下:
结果,就是正确初始化之后,非S类型可以正确解析,因此要解决非String类型解析为null得问题就是正确初始化成员属性字段 ,我是在实体类中初始化了,也不知道这样对不对,还有就是在构造对象时候去解决