如何检查JSONArray元素是否为空

时间:2012-09-03 17:01:14

标签: java json arrays

我无法弄清楚如何确定生活在json数组中的元素是否为null。要检查jsonObject本身是否为null,只需使用:

jsonObject.isNullObject();

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

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

在数组的元素上也没有可用的isNull方法。如何检查jsonarray中的值是否为空?知道我从javascript传递一个null对象可能会有所帮助。也许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());
}

3 个答案:

答案 0 :(得分:17)

尝试.isNull()

对于你的例子:

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

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

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

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

答案 1 :(得分:15)

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

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

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

答案 2 :(得分:1)

尝试JSONArray的方法

public boolean isNull (int index)

实际上,它使用“null”字符串与内容

进行比较
JSONObject.NULL.equals(this.opt(index));