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.
CodePudding user response:
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");
}
}
CodePudding user response:
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!!
