Как установить значение null с помощью org.формат JSON.JSONObject в java?


Как установить значение null с помощью org.формат JSON.JSONObject в java? Я, конечно, могу прочитать, если значение равно null, используя isNull - но похоже, что когда я ставлю 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
2 61

2 ответа:

попробуйте установить JSONObject.NULL вместо null:

значение sentinel, используемое для явного определения имени без значения. В отличие от null, имена с этим значением:

  • показать в массиве имен ()
  • показать в keys () iterator
  • возвращает true для has (String)
  • не бросайте на get (String)
  • включены в кодированную строку JSON.

это значение нарушает общий контракт equals (Object), возвращая true по сравнению с null. Его метод toString () возвращает значение "null".

С net.научная фантастика.формат JSON.JSONObject мне нужно создать null JSON by

new JSONObject(true)

вот как я получаю класс в groovy:

groovy.grape.Grape.grab(group: "org.kohsuke.stapler", module: "json-lib", version: "2.4-jenkins-2")