如何在java中使用org.json.JSONObject将值设置为null?

2022-08-31 13:07:17

如何在java中使用org.json.JSONObject将值设置为null?我当然可以使用isNull读取值是否为null - 但似乎当我放置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

答案 1

尝试设置 JSONObject.NULL 而不是 :null

用于显式定义不带值的名称的哨兵值。与 null 不同,具有以下值的名称:

  • 显示在 names() 数组中
  • 显示在 keys() 迭代器中
  • 对于 has(字符串) 返回 true
  • 不要扔上 get(String)
  • 包含在编码的 JSON 字符串中。

此值违反了 equals(Object) 的一般约定,与 null 相比,它返回 true。它的 toString() 方法返回 “null”。


答案 2

对于我使用net.sf.json.JSONObject,我需要通过以下方式创建一个空值JSON

new JSONObject(true)

这就是我如何把类变成时髦的:

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