¿Cómo puedo detectar cuando un valor json es nulo? por ejemplo: [{"username": null}, {"username": "null"}]
El primer caso representa un nombre de usuario inexistente y el segundo un usuario llamado "nulo". Pero si intenta recuperarlos, ambos valores dan como resultado la cadena "nulo"
JSONObject json = new JSONObject("{\"hello\":null}");
json.put("bye", JSONObject.NULL);
Log.e("LOG", json.toString());
Log.e("LOG", "hello="+json.getString("hello") + " is null? "
+ (json.getString("hello") == null));
Log.e("LOG", "bye="+json.getString("bye") + " is null? "
+ (json.getString("bye") == null));
La salida del registro es
{"hello":"null","bye":null}
hello=null is null? false
bye=null is null? false
has(java.lang.String);
métodoRespuestas:
Prueba con
json.isNull( "field-name" )
.Referencia: http://developer.android.com/reference/org/json/JSONObject.html#isNull%28java.lang.String%29
fuente
Debido a que JSONObject # getString devuelve un valor si la clave dada existe, no es nulo por definición. Esta es la razón por la que existe JSONObject.NULL: para representar un valor JSON nulo.
fuente
Para Android, generará una JSONException si no existe tal asignación. Entonces no puede llamar a este método directamente.
si sus datos pueden estar vacíos (puede que no exista la clave), intente
o
en lugar.
En su código de demostración, el
esto se obtiene es String "nulo" no nulo.
tu deberías usar
fuente
primero verifique con
isNull()
.... si no puede funcionar, intente a continuacióny también tienes
JSONObject.NULL
que comprobar el valor nulo ...y en tu caso también revisa
resultObject.getString("username").trim().eqauls("null")
fuente
Si debe analizar json primero y manejar el objeto más tarde, intente esto
Analizador
Manipulador
fuente
Aquí hay un método auxiliar que utilizo para poder obtener cadenas JSON con solo una línea de código:
y luego algo como esto:
le daría su valor de cadena o establecería de manera segura su variable de cadena en nulo. Utilizo Gson siempre que puedo para evitar errores como estos. Maneja valores nulos mucho mejor en mi opinión.
fuente