2012-01-10 14 views
23

membro stackoverflow ho bisogno di aiuto da parte vostra.Come confrontare il valore nullo da JsonObject in java

Sto avendo un JsonObject indicato di seguito

{ 
"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 } 

sto ottenendo parentId come null. Voglio sostituire il valore parentId da zero a 0.

che sto cercando di farlo con sottostante menzionato codice

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

ma sembra non funzionare. Quello che sto facendo qui è sbagliato.

+1

Cosa succede con l'oggetto JSON dopo il codice è eseguito? Qual è l'output prom di System.out.printlns? Il requisito JsonObject o solo il parser Json che hai scelto? –

+0

non ottengo alcun output. ma prima se condizione se inserisco il ** System.out.println ("JSON OBJECT VALUE FOR PARENTID ::" + jsonObject.get ("parentId")); ** Sto ottenendo il valore di stampa come ** null ** quindi voglio verificarlo usando la condizione ma va sempre in un'altra parte. Non so qual è il problema in questo – yaryan997

+0

"non sto ottenendo alcun output" cosa intendi? O si ottiene il println dal caso 'then' o da quello 'else'. – Viruzzo

risposta

98

utilizzare il seguente metodo di JsonObject per verificare se un valore contro qualsiasi chiave è nullo

public boolean isNull(java.lang.String key) 

Questo metodo viene utilizzato per controllare Null contro qualsiasi tasto o se non v'è alcun valore per la chiave.

controllo questo nel documentation

Il codice modificato dovrebbe essere così

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); 
    } 
+0

grazie per la tua risposta ma il mio jsonlib-2.2.3.jar non ha ** isNull ** dichiarazione del metodo al suo interno. quindi come confrontare nll oggetto forma dati json. ?? – yaryan997

+3

In jsonlib-2.2.3.jar, controllare classe net.sf.json.util.JSONUtils ha metodo isNull –

+4

sì .. Rao ho fatto con classe JSONUtils ** jsonUtils booleani = JSONUtils.isNull (jsonObject.get ("parentId ")); ** grazie per il supporto – yaryan997

0

provare i seguenti codici.

if(jsonObject.isNull("parentId") || jsonObject.get("parentId").equals("")) 
+0

questo non funziona in 'json.simple. *' cosa fare essere usato in 'json.simple' –

3
if(jsonObject.isNull("parentId")){ 
    jsonObject.put("parentId", 0); 
} 
+0

questo non funziona in' json.simple. * 'cosa usare in' json.simple' –

0

Per com.google.gson.JsonObject, Ho seguito questo:

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

Nel mio JSON, ho:

"Id":null