tutorialspoint studio recibir parser getjsonarray example datos consumir array java android json

java - studio - Android Json y valores nulos



save json android (6)

Aquí hay un método de ayuda que utilizo para que pueda obtener cadenas JSON con una sola línea de código:

public String getJsonString(JSONObject jso, String field) { if(jso.isNull(field)) return null; else try { return jso.getString(field); } catch(Exception ex) { LogHelper.e("model", "Error parsing value"); return null; } }

y luego algo como esto:

String mFirstName = getJsonString(jsonObject, "first_name");

le daría el valor de su cadena o establecería de manera segura su variable de cadena en nulo. Uso Gson siempre que puedo para evitar trampas como estas. Maneja valores nulos mucho mejor en mi opinión.

¿Cómo puedo detectar cuándo 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 de registro es

{"hello":"null","bye":null} hello=null is null? false bye=null is null? false


Como JSONObject # getString devuelve un valor si la clave dada existe, no es nulo por definición. Esta es la razón por la que JSONObject.NULL existe: para representar un valor JSON nulo.

json.getString("hello").equals(JSONObject.NULL); // should be false json.getString("bye").equals(JSONObject.NULL); // should be true


Para Android, se generará una excepción JSONException si no existe dicha asignación. Entonces no puedes llamar a este método directamente.

json.getString("bye")

si sus datos pueden estar vacíos (puede que no exista la clave), intente

json.optString("bye","callback string");

o

json.optString("bye");

en lugar.

En su código de demostración, el

JSONObject json = new JSONObject("{/"hello/":null}"); json.getString("hello");

esto que obtienes es String "null" no nulo.

tu uso shoud

if(json.isNull("hello")) { helloStr = null; } else { helloStr = json.getString("hello"); }



Si primero debe analizar json y manejar el objeto más adelante, intente esto

Analizador

Object data = json.get("username");

Entrenador de animales

if (data instanceof Integer || data instanceof Double || data instanceof Long) { // handle number ; } else if (data instanceof String) { // hanle string; } else if (data == JSONObject.NULL) { // hanle null; }


primer control con isNull() ... si no puede funcionar, intente debajo

y también tiene JSONObject.NULL para verificar el valor nulo ...

if ((resultObject.has("username") && null != resultObject.getString("username") && resultObject.getString("username").trim().length() != 0) { //not null }

y en su caso también marque resultObject.getString("username").trim().eqauls("null")