【问题标题】:How to check if JSONArray Element is null如何检查 JSONArray 元素是否为空
【发布时间】:2012-08-28 10:03:46
【问题描述】:

我不知道如何确定 json 数组中的元素是否为空。要检查 jsonObject 本身是否为空,您只需使用:

jsonObject.isNullObject();

但是当对象是一个数组并且我想检查该数组的元素之一是否为空时,这不起作用:

jsonArray.get(i).get("valueThatIsNull") == null;

数组元素也没有可用的 isNull 方法。如何检查 jsonarray 中的值是否为空?知道我正在从 javascript 传递一个空对象可能会有所帮助。当它从 json 格式的 javascript 传递时,可能 null 在 java 中并不意味着同样的事情,但我也尝试在 null 周围加上括号,但它仍然不起作用。

我发布了一些实际的源代码以帮助更清楚地说明这一点。 jsonObject 是 jsonArray 的一部分,并且该对象有多个值,因为它本身就是一个对象。

JSONObject mapItem = jsonArray.getJSONObject(i);
int id = mapItem.has("id") ? mapItem.getInt("id") : -1;
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date = null;
Date sqlDate = null;
if(mapItem.has("date")) {
    String dateStr = mapItem.getString("date");
    if(!dateStr.equals("null")) {
    date = dateFormat.parse(mapItem.getString("date").substring(0, 10)); //Convert javascript date string to java.
    sqlDate = new Date(date.getTime());
}

【问题讨论】:

    标签: java json arrays


    【解决方案1】:

    我猜 json 将 null 值作为字符串传递,因此您不能将 null 作为 java 元素进行检查。而是将 null 值视为字符串,以这种方式进行检查:

    if(!mapItem.getString("date").equals("null")) {
        //Value is not null
    }
    

    我已将原始问题中的代码 sn-p 更新为工作版本。

    【讨论】:

      【解决方案2】:

      试试.isNull():

      你的例子:

      if(!mapItem.isNull("date")) {
          //Value is not null
      }
      

      但是,要回答这个问题的标题“如何判断 JSONArray 元素是否为空”,请使用 .equals()

      所以,检查索引 1 是否为空:

      if (!jsonArray.get(1).equals(null)) {
          //jsonArray[1] is not null
      }
      

      【讨论】:

        【解决方案3】:

        试试 JSONArray 的方法

        public boolean isNull (int index)
        

        实际上,它使用“null”字符串来比较内容

        JSONObject.NULL.equals(this.opt(index));
        

        【讨论】:

        • 这应该被赞成。这是遍历数组的完美解决方案。
        猜你喜欢
        • 2015-05-02
        • 2016-10-04
        • 2013-01-10
        • 2013-07-20
        • 1970-01-01
        • 1970-01-01
        • 2017-03-28
        • 2019-05-14
        • 2011-10-12
        相关资源
        最近更新 更多