33

stackoverflow member i need some help from you.

I am having a JsonObject given below

{
"Id": null,
"Name": "New Task",
"StartDate": "2010-03-05T00:00:00",
"EndDate": "2010-03-06T00:00:00",
"Duration": 1,
"DurationUnit": "d",
"PercentDone": 60,
"ManuallyScheduled": false,
"Priority": 1,
"parentId": null,
"index": 2,
"depth": 1,
"checked": null }

i am getting parentId as null. I want to replace the parentId value from null to 0.

I am trying to do it with below mentioned code

if(jsonObject.get("parentId") == null || jsonObject.get("parentId") == "")
    {
        System.out.println("inside null");
        jsonObject.put("parentId", 0);
    }
    else
    {
        System.out.println("inside else part");
        //jsonObject.put("parentId", jsonObject.getInt("parentId"));
        jsonObject.put("parentId", 0);
    }

but it seems not to be working. What I am doing wrong here.

yaryan997
  • 483
  • 3
  • 10
  • 18
  • 1
    What happens with the json object after the code is executed? What is the output prom the System.out.printlns? Is JsonObject requirement or just the Json parser you chose? – Boris Strandjev Jan 10 '12 at 11:38
  • i am not getting any output. but before if condition if i put the **System.out.println("JSON OBJECT VALUE FOR PARENTID ::"+jsonObject.get("parentId"));** i am getting the printout value as **null** so i want to check it using if condition but it always goes to else part only. Don't know what's the problem in this – yaryan997 Jan 10 '12 at 11:46
  • "i am not getting any output" what do you mean? Either you get the println from the 'then' case or from the 'else' one. – Viruzzo Jan 10 '12 at 11:56

7 Answers7

137

Use the following method of JsonObject to check if a value against any key is null

public boolean isNull(java.lang.String key)

This method is used to check Null against any key or if there is no value for the key.

check this in the documentation

Your Modified code should be like this

if(jsonObject.isNull("parentId"))
    {
        System.out.println("inside null");
        jsonObject.put("parentId", 0);
    }
    else
    {
        System.out.println("inside else part");
        //jsonObject.put("parentId", jsonObject.getInt("parentId"));
        jsonObject.put("parentId", 0);
    }
Community
  • 1
  • 1
Rajesh Pantula
  • 10,061
  • 9
  • 43
  • 52
5

For com.google.gson.JsonObject, I followed this :

boolean isIdNull = jsonObject.get("Id").isJsonNull();

In my json, I have :

"Id":null
AndroidGuy
  • 1,270
  • 4
  • 15
  • 32
5
if(jsonObject.isNull("parentId")){
    jsonObject.put("parentId", 0);
}
3

For anyone using org.json.JSONObject in 2020, if you have {"key":null}

Check the value of the key by JSONObject.NULL

JSONObject json = new JSONObject("{"key":null}");
Object value = json.get("key");
if (value == JSONObject.NULL){
  ...
}
BabyishTank
  • 1,329
  • 3
  • 18
  • 39
1

Try the following codes.

if(jsonObject.isNull("parentId") || jsonObject.get("parentId").equals(""))
Yu Sun corn
  • 616
  • 6
  • 8
0

Try to use the next code

int parentId = jsonObject.optInt("parentId", 0)
yoAlex5
  • 29,217
  • 8
  • 193
  • 205
0

These two methods works

if( jsonObject.get("parentId").equals(null) )

if( jsonObject.isNull("parentId") )

Because the JSONObject has its own Null class, so java primitive null is not same as Null() in JSONObject.

enter image description here

abdul rashid
  • 730
  • 9
  • 21