【问题标题】:How to check if JSON object is empty in Java?如何检查Java中的JSON对象是否为空?
【发布时间】:2023-03-15 20:00:01
【问题描述】:

在 Java 中,如果我使用以下 JSON 字符串作为示例,我将如何检查对象是否为 empty/null

{"null_object_1" : [], "null_object_2" : [null] }

我尝试过使用:

if(!jsonSource.isNull("null_object_1"))  {/*null_object_1 is not empty/null*/}
if(!jsonSource.isNull("null_object_2"))  {/*null_object_2 is not empty/null*/}

但是这些IF 语句仍然返回true(好像它们不是空/null)。

有人有解决办法吗?

编辑: 我所说的“对象”实际上是指array

【问题讨论】:

    标签: java json isnull


    【解决方案1】:

    这两件事都不是null;它们是数组。结果正是您所期望的。

    您的一个数组是空的,另一个包含一个元素 null

    如果你想知道一个数组是否为空,你需要获取数组,然后检查它的长度。

    JSONObject myJsonObject = 
        new JSONObject("{\"null_object_1\":[],\"null_object_2\":[null]}");
    
    if (myJsonObject.getJSONArray("null_object_1").length() == 0) {
        ... 
    }
    

    编辑澄清:没有元素(空)的数组和元素为null 的数组完全不同。对于第二个数组,它既不是 null 也不是空的。正如我所提到的,它是一个具有单个元素 null 的数组。如果您有兴趣确定是否是这种情况,则需要获取数组,然后遍历它测试每个元素以查看它是否为 null 并根据结果采取相应措施。

    【讨论】:

    • 感谢您澄清 Java 的 null (:我太习惯于使用 PHP(检查 null 通常用于空和 null)。
    • 很高兴我能帮上忙。老实说,恕我直言,出于这个原因,我会避免使用null。在 Java 中null 有一个特殊的含义,它不等同于0 或“空”——它只能分配给对象引用变量,并表示该变量没有分配给它的对象引用。
    【解决方案2】:

    根据本文档JSONObject APIisNull 检查值 NULL,这在您的情况下不正确。

    如果'null_object_1'值为String,则需要使用Stringtemp = getString("keyName")并勾选

    !("".equals(temp));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 2013-10-11
      • 1970-01-01
      • 2017-07-27
      • 2012-06-26
      • 2011-05-16
      相关资源
      最近更新 更多