15

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

3 Answers 3

21

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
}
Sign up to request clarification or add additional context in comments.

Comments

15

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.

Comments

3

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

1 Comment

This should be upvoted. It's the perfect solution for iterating through the array.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.