【问题标题】:How to compare null value from the JsonObject in java如何比较Java中JsonObject的空值
【发布时间】:2012-02-06 19:16:51
【问题描述】:

stackoverflow 成员我需要你的帮助。

我在下面给出了一个 JsonObject

{
"Id": null,
"Name": "New Task",
"StartDate": "2010-03-05T00:00:00",
"EndDate": "2010-03-06T00:00:00",
"Duration": 1,
"DurationUnit": "d",
"PercentDone": 60,
"ManuallyScheduled": false,
"Priority": 1,
"parentId": null,
"index": 2,
"depth": 1,
"checked": null }

我将 parentId 设为 null。我想将 parentId 值从 null 替换为 0。

我正在尝试使用下面提到的代码来做到这一点

if(jsonObject.get("parentId") == null || jsonObject.get("parentId") == "")
    {
        System.out.println("inside null");
        jsonObject.put("parentId", 0);
    }
    else
    {
        System.out.println("inside else part");
        //jsonObject.put("parentId", jsonObject.getInt("parentId"));
        jsonObject.put("parentId", 0);
    }

但它似乎不起作用。我在这里做错了什么。

【问题讨论】:

  • 代码执行后json对象会发生什么? System.out.printlns 的输出是什么?是 JsonObject 要求还是只是您选择的 Json 解析器?
  • 我没有得到任何输出。但在 if 条件之前,如果我将 System.out.println("JSON OBJECT VALUE FOR PARENTID ::"+jsonObject.get("parentId")); 我得到的打印输出值为 null 所以我想使用 if 条件检查它,但它总是只转到 else 部分。不知道这是什么问题
  • “我没有得到任何输出”你是什么意思?您可以从“then”案例或“else”案例中获取 println。

标签: java json hibernate extjs4


【解决方案1】:

使用JsonObject的以下方法检查任何键的值是否为空

public boolean isNull(java.lang.String key)

此方法用于根据任何键检查 Null 或该键是否没有值。

documentation 中查看此内容

你的修改后的代码应该是这样的

if(jsonObject.isNull("parentId"))
    {
        System.out.println("inside null");
        jsonObject.put("parentId", 0);
    }
    else
    {
        System.out.println("inside else part");
        //jsonObject.put("parentId", jsonObject.getInt("parentId"));
        jsonObject.put("parentId", 0);
    }

【讨论】:

  • 感谢您的回复,但我的 jsonlib-2.2.3.jar 中没有 isNull 方法声明。那么如何比较nll对象形式的json数据。 ??
  • 在jsonlib-2.2.3.jar中查看net.sf.json.util.JSONUtils类是否有isNull方法
  • 是的.. rao 我使用 JSONUtils 类 boolean jsonUtils = JSONUtils.isNull(jsonObject.get("parentId")); 感谢您的支持
  • @RajeshPantula 这在json.simple.* 中不起作用json.simple 中使用什么
【解决方案2】:

对于 2020 年使用 org.json.JSONObject 的任何人, 如果你有 {"key":null}

通过JSONObject.NULL检查key的值

JSONObject json = new JSONObject("{"key":null}");
Object value = json.get("key");
if (value == JSONObject.NULL){
  ...
}

【讨论】:

  • JSONObject.NULL 是我正在寻找的答案,谢谢。
【解决方案3】:

这两种方法都有效

if( jsonObject.get("parentId").equals(null) )

if( jsonObject.isNull("parentId") )

因为JSONObject有自己的Null类,所以java原语null与JSONObject中的Null()不一样。

【讨论】:

    【解决方案4】:

    尝试使用下一个代码

    int parentId = jsonObject.optInt("parentId", 0)
    

    【讨论】:

      【解决方案5】:

      对于 com.google.gson.JsonObject,我遵循了这个:

      boolean isIdNull = jsonObject.get("Id").isJsonNull();
      

      在我的 json 中,我有:

      "Id":null
      

      【讨论】:

        【解决方案6】:
        if(jsonObject.isNull("parentId")){
            jsonObject.put("parentId", 0);
        }
        

        【讨论】:

        • 这在json.simple.* 中不起作用json.simple 中使用什么
        【解决方案7】:

        试试下面的代码。

        if(jsonObject.isNull("parentId") || jsonObject.get("parentId").equals(""))
        

        【讨论】:

        • 这在json.simple.* 中不起作用json.simple 中使用什么
        猜你喜欢
        • 2018-05-30
        • 1970-01-01
        • 2016-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-13
        相关资源
        最近更新 更多