2012-11-28 30 views
55

Javaでorg.json.JSONObjectを使用して値をnullに設定するにはどうすればよいですか?値がのisNullを使用して、nullの場合、私は確かに読むことができます - しかし、私はnullを入れたとき、それはちょうど私を無視するように思える:代わりにnullJSONObject.NULLを設定する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

nullを入力すると、キーが削除されます。http://www.json.org/javadoc/org/json/JSONObject.html#put(java.lang.String,%20java.lang.Object) –

答えて

136

試してみてください。

センチネル値を持たない名前を明示的に定義するために使用される値。ヌルとは異なり、この値を持つ名:

  • は(名前に表示)配列
  • が持っているため
  • リターン真キー()イテレータに表示(文字列)
  • がオンにスローされません。 get(String)
  • は、エンコードされたJSON文字列に含まれています。

この値は、nullと比較してtrueを返すことによってequals(Object)の一般規約に違反します。そのtoString()メソッドは "null"を返します。

+1

魅力的な作品です!ありがとう! –

+0

契約違反の例を挙げることができますか? – voipp

+0

@voippそれはルールに違反します( 'Object.equals'から):*" null以外の参照値 'x'については、' x.equals(null) 'はfalseを返すべきです。 –

関連する問題