json转对象的时候字段为空值的时候会被过滤 | 您所在的位置:网站首页 › java集合使用完需要置为空值吗 › json转对象的时候字段为空值的时候会被过滤 |
今天突然想起来一个json字符串转json对象的时候容易忽略的一个小细节。只为自己记录 问题:json字符串里面有值为null的转json对象的时候字段消失 假设:调接口的时候,返回的json字符串里面有两条记录,每条记录里面有三个字段, a,b,c 接口返回的json字符串样例: { “msg”:“请求成功!”, “code”:“200”, “data”:[ { “a”:null, “b”:“20210322”, “c”:null }, { “a”:null, “b”:“20210323”, “c”:null } ] } 但是c字段的值是null 这时候一般都会把json字符串先转成JSONObject对象,然后从对象里面取值, 直接转的时候是可以转的,但是转完之后你会发现你要取a和c字段的时候会报错,找不到字段,是因为a和c值为空自动屏蔽掉了, 解决办法一: String ssssss=JSONObject.toJSONString(jsonString, SerializerFeature.WriteMapNullValue); JSONObject jsonobject = JSONObject.parseObject(ssssss); 1,从json对象里面取code String code = jsonobject.getString(“code”) 2,data里面是多条记录的时候,要转json数组 JSONArray jsonArray = JSONArray.fromObject(jsonobject.get(“data”)); 然后遍历json数组,从数组里面取对应记录的值就可以了 附: QuoteFieldNames———-输出key时是否使用双引号,默认为true WriteMapNullValue——–是否输出值为null的字段,默认为false WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null 解决办法二: 如果接口返回的数据在你项目里面有对应的实体类,这就简单了, jsonString:是接收到接口返回的结果 List Danganlist = JSONObject.parseArray(jsonString, Dangan.class); 对Danganlist 判空, 遍历Danganlist 再取值就和实体类取值一样了 String aaa = Dangan.getAaa(); |
CopyRight 2018-2019 实验室设备网 版权所有 |