如何检查 JSONArray 元素是否为空

2022-09-04 05:56:32

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

jsonObject.isNullObject();

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

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

数组的元素上也没有可用的 isNull 方法。如何检查 jsonarray 中的值是否为空?知道我正在从javascript传递一个空对象可能会有所帮助。也许null在java中并不意味着同样的事情,当它以json格式从javascript传递时,但我也尝试过在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());
}

答案 1

尝试:.isNull()

对于您的示例:

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

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

因此,要检查索引 1 是否为空:

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

答案 2

我猜json将空值作为字符串传递,因此您无法将空值作为java元素进行检查。相反,将 null 值视为字符串,如下所示:

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

我已将原始问题中的代码片段更新为工作版本。