ryandlf
ryandlf

Reputation: 28555

How to check if JSONArray Element is null

I can't figure out how to determine is an element that lives inside a json array is null. To check if the jsonObject itself is null, you simply use:

jsonObject.isNullObject();

But when the object is an array and I want to check if one of the elements of that array is null, this does not work:

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

There is also no isNull method available on elements of an array. How do I check if values inside a jsonarray are null? It might help to know that I am passing over a null object from javascript. Maybe null does not mean the same thing in java when it is passed from javascript in json format, but I have also tried putting parentheses around the null and it still does not work.

I am posting some actual source code to help make this clearer. The jsonObject is a part of the jsonArray and the object has multiple values because it iself is an object.

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());
}

Upvotes: 15

Views: 44460

Answers (3)

mianlaoshu
mianlaoshu

Reputation: 2592

try JSONArray's method

public boolean isNull (int index)

In fact, it uses "null" string comparing to the content

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

Upvotes: 3

Peter Ajtai
Peter Ajtai

Reputation: 57685

Try .isNull():

For your example:

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

However, to answer the title of this question, "how to tell if a JSONArray element is null", use .equals()

So, to check if index 1 is null:

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

Upvotes: 21

ryandlf
ryandlf

Reputation: 28555

I guess json passes null values as strings, so you can't check null as a java element. Instead treat the null value as a string as check this way:

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

I have updated the code snippet in the original question to a working version.

Upvotes: 15

Related Questions