json转对象的时候字段为空值的时候会被过滤 您所在的位置:网站首页 java集合使用完需要置为空值吗 json转对象的时候字段为空值的时候会被过滤

json转对象的时候字段为空值的时候会被过滤

2024-06-03 13:24| 来源: 网络整理| 查看: 265

今天突然想起来一个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 实验室设备网 版权所有