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!!