skip to Main Content
import org.json.JSONObject;

String someStringJsonData = "{"someKey": " + "null" + "}"; 
JSONObject someJsonObjectData = new JSONObject(someStringJsonData); 
Object someKey = someJsonObjectData.get("someKey");  
if (null == someKey) {                 
        System.out.println("someKey is null");                             
}

I have the above simple snippet of code. I would expect to see "someKey is null" printed, however, my code never goes in the if loop. I tried printing value of someKey and it shows to be null. Not sure what I am missing.

I tried different values of the jsonString from this post but to no avail.

2

Answers


  1. Chosen as BEST ANSWER

    I needed to do the check for

    JSONObject.NULL and not null https://developer.android.com/reference/org/json/JSONObject.html#NULL.

    Printing the class of someKey helped. Thank you everyone for your time!!


  2. Per its docs, the internal form of the value of a JSONObject can contain values of these types: Boolean, JSONArray, JSONObject, Number, String, or the JSONObject.NULL object. Therefore, I would not expect its get() method to return null for any key. In your particular case, I would expect someJsonObjectData.get("someKey") to return JSONObject.NULL, which will compare unequal to null.

    JSONObject.NULL is a specific object, so it should be safe to perform == comparisons with it:

    import org.json.JSONObject;
    
    // ...
    
        void doSomething() {
            String someStringJsonData = "{"someKey": null}"; 
            JSONObject someJsonObjectData = new JSONObject(someStringJsonData); 
            Object someValue = someJsonObjectData.get("someKey");  
    
            if (someValue == JSONObject.NULL) {                 
                System.out.println("someKey's value is null");                             
            }
        }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search