2012-11-28 116 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”*。 –

相关问题