2012-01-10 12 views
23

miembro de stackoverflow Necesito ayuda de usted.Cómo comparar el valor nulo de JsonObject en java

Estoy teniendo un JSONObject dada a continuación

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

que estoy recibiendo parentId como nulo. Quiero reemplazar el valor parentId de NULL a 0.

que estoy tratando de hacerlo con código

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

a continuación se menciona, pero parece no estar funcionando. Lo que estoy haciendo mal aquí.

+1

¿Qué ocurre con el objeto JSON después el código se ejecuta? ¿Cuál es la salida prom del System.out.printlns? ¿Es el requisito JsonObject o simplemente el analizador Json que usted eligió? –

+0

no obtengo ninguna salida. pero antes si condición si puse el ** System.out.println ("JSON OBJECT VALUE FOR PARENTID ::" + jsonObject.get ("parentId")); ** obtengo el valor de impresión como ** null ** entonces quiero verificarlo usando la condición if pero siempre va a la parte else solamente. No sé cuál es el problema en este – yaryan997

+0

"no obtengo ningún resultado", ¿a qué te refieres? O obtiene la impresión del caso 'entonces' o del 'otro'. – Viruzzo

Respuesta

98

utilizar el siguiente método de JSONObject para comprobar si un valor en contra de cualquier clave es nula

public boolean isNull(java.lang.String key) 

Este método se utiliza para comprobar Null contra cualquier tecla o si no hay valor de la clave.

cheque esto en el documentation

Su código modificado debe ser así

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

gracias por su respuesta, pero mi jsonlib-2.2.3.jar no tiene declaración de método ** isNull **. entonces, cómo comparar nll forma de objeto json datos. ?? – yaryan997

+3

En jsonlib-2.2.3.jar, compruebe net.sf.json.util.JSONUtils clase tiene isNull método –

+4

sí ... rao lo hice usando la clase JSONUtils ** boolean jsonUtils = JSONUtils.isNull (jsonObject.get ("parentId ")); ** Gracias por su apoyo – yaryan997

0

Pruebe los siguientes códigos.

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

esto no está funcionando en 'json.simple. *' qué ser usado en 'json.simple' –

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

esto no está funcionando en' json.simple. * 'qué usar en' json.simple' –

0

Para com.google.gson.JsonObject, he seguido este:

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

En mi JSON, que tengo:

"Id":null