2012-11-28 12 views
55

Come si imposta un valore su null con org.json.JSONObject in java? Posso certamente leggere se un valore è nullo utilizzando isNull - ma sembra che quando ho messo nulla, semplicemente mi ignora:Come si imposta un valore su null con org.json.JSONObject in java?

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

Se si inserisce il valore null, viene rimossa la chiave: http://www.json.org/javadoc/org/json/JSONObject.html#put(java.lang.String,%20java.lang.Object) –

risposta

136

tenta di impostare JSONObject.NULL invece di null:

Una sentinella valore usato per definire esplicitamente un nome senza valore. A differenza di nulla, i nomi con questo valore:

  • presentarsi nei nomi() allineamento
  • appaiono nelle chiavi() iteratore
  • ritorno vero per ha (String)
  • non gettano su get (String)
  • sono inclusi nella stringa JSON codificata.

Questo valore viola il contratto generale di equals (Object) restituendo true rispetto a null. Il suo metodo toString() restituisce "null".

+1

Funziona come un fascino! Grazie! –

+0

potresti fornire un esempio del motivo per cui violerebbe il contratto? – voipp

+0

@voipp viola la regola (da 'Object.equals'): *" Per qualsiasi valore di riferimento non nullo 'x',' x.equals (null) 'deve restituire false" *. –

Problemi correlati