2012-11-28 63 views
55

如何在java中使用org.json.JSONObject將值設置爲null?我當然可以讀一個值是使用的isNull空 - 但似乎當我把空的,它只是不理我:如何在java中使用org.json.JSONObject將值設置爲null?

JSONObject o = new JSONObject(); 
o.put("key",null); 
o.isNull("key"); // returns true, buuuut... 
o.has("key"); // returns false 
o.isNull("somethingIHaventSetAtAll"); // also returns true, unfortunately 
+6

如果你把空值,那麼它刪除鍵:http://www.json.org/javadoc/org/json/JSONObject.html#put(java.lang.String,%20java.lang.Object) –

回答

136

嘗試設置JSONObject.NULL,而不是null

前哨值用於顯式定義沒有值的名稱。不同於零,這個值名稱:

  • 在名稱顯示()排列
  • 中鍵()迭代器顯示
  • 還真的有(字符串)
  • 不扔get(String)
  • 包含在編碼的JSON字符串中。

該值通過與null進行比較返回true來違反equals(Object)的一般合約。它的toString()方法返回「null」。

+1

工程就像一個魅力!謝謝! –

+0

你能否提供一個爲什麼會違反合同的例子? – voipp

+0

@voipp它違反了規則(來自'Object.equals'):*「對於任何非空引用值'x','x.equals(null)'應該返回false」*。 –

相關問題