json的containsKey的判斷,明明沒有這個key,為什麼判斷顯示有?

NO IMAGE

    本人用的是fastjson的json處理工具,今天出現了一個奇怪的事情,在用containsKey的時候,列印出來的json字串,沒有這個key值,但是為什麼會進去呢?測試了很久,覺得很詭異,後來問了一個踩坑多年的老司機,才知道問題所在,在json進行tostring的時候,如果值是null的時候,列印的時候,不會列印出value為null的key。

    如下測試程式碼,以及結果:

package com.lk.test;
import com.alibaba.fastjson.JSONObject;
public class FastjsonTest {
public static void main(String[] args) {
JSONObject orginl_obj = new JSONObject();
orginl_obj.put("one", 1);
orginl_obj.put("two", 2);
orginl_obj.put("three", 3);
orginl_obj.put("four", 4);
System.out.println("原始的json值:"   orginl_obj.toString());
orginl_obj.put("four", null);
System.out.println("此時將值變為null:"   orginl_obj.toJSONString());
if (orginl_obj.containsKey("four")) {
System.out.println("the key is exist,and value is :"   orginl_obj.get("four"));
}
}
}

結果:

原始的json值:{"four":4,"one":1,"two":2,"three":3}
此時將值變為null:{"one":1,"two":2,"three":3}
the key is exist,and value is :null

如果還有哪些坑,歡迎留言,一起探討。這裡只做了fastjson的測試,其他的json是否會這樣,大家可以自行測試。