问题1:
问题:JSON字符串转换成JSONObject的时候 ,会有数据精度的问题,这种情况我们怎么解决呢?
处理方案:我们一般都会通过fastjson来解决这个问题。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.24</version>
</dependency>
问题2:
问题:fastjson在解析字符串时如果某个字段的值为null,则实际解析不会展示为null的字段和值,这个时候我们怎么去设置断言?
处理方案:可以直接通过要取值的字段取值,结果会返回为null
演示代码:
String body_bvt1 = "{\"reconDate\":\"2022-08-17\",\"a\":{\"page\":null},\"pageSize\":300}";
JSONObject bs = JSON.parseObject(body_bvt1);
System.out.println(bs.getJSONObject("a").getString("page"));
返回结果:
null
问题3
当字段不存在时,通过json取值fastjson也会返回null,这样我们就没办法区分问题2中字段值为null而非字段不存在的情况,这个时候我们怎么去处理?
演示代码: - 字段存在的情况
String body_bvt1 = "{\"reconDate\":\"2022-08-17\",\"a\":{\"page\":null},\"pageSize\":300}";
JSONObject bs = JSON.parseObject(body_bvt1);
System.out.println(bs.getJSONObject("a").containsKey("page"));
返回结果:
true
演示代码: - 字段不存在的情况
String body_bvt1 = "{\"reconDate\":\"2022-08-17\",\"a\":"o",\"pageSize\":300}";
JSONObject bs = JSON.parseObject(body_bvt1);
System.out.println(bs.getJSONObject("a").containsKey("page"));
返回结果:
false
这样我们就可以通过containsKey关键字,完成对字段是否存在的判断。
补充的知识: