問題1:
問題:JSON字符串轉(zhuǎn)換成JSONObject的時候 ,會有數(shù)據(jù)精度的問題,這種情況我們怎么解決呢?
處理方案:我們一般都會通過fastjson來解決這個問題。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.24</version>
</dependency>
問題2:
問題:fastjson在解析字符串時如果某個字段的值為null,則實際解析不會展示為null的字段和值,這個時候我們怎么去設(shè)置斷言?
處理方案:可以直接通過要取值的字段取值,結(jié)果會返回為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"));
返回結(jié)果:
null
問題3
當字段不存在時,通過json取值fastjson也會返回null,這樣我們就沒辦法區(qū)分問題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"));
返回結(jié)果:
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"));
返回結(jié)果:
false
這樣我們就可以通過containsKey關(guān)鍵字,完成對字段是否存在的判斷。
補充的知識:

jsonobject源碼.png