首先我遇到的问题是这样子的,我使用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( 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,就很麻木,用可视化工具看一下:

\"\"

很明显这还不是我想要的结果,然后再百度:

https://www.jianshu.com/p/c6dd9a6b10ee 

结合他的方法,找了个简单一点的自定义适配器的方法,试了一下,嗯有点效果,就是实体类里面的String类型全被转换成

空字符串:“”

But,实体类里面的其他类型的变量还是被解析为null,就是变量本身是没有被初始化的,于是我在实体类里给其赋默认值试了一下:

 

\"\"

结果,就是正确初始化之后,非S类型可以正确解析,因此要解决非String类型解析为null得问题就是正确初始化成员属性字段 ,我是在实体类中初始化了,也不知道这样对不对,还有就是在构造对象时候去解决

\"\"

收藏 打印