Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android Json y valores nulos

¿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 recuperar ambos valores resultan en la cadena "null"

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 

  • JSON Array iteration en Android / Java
  • @IntDef Anulación de soporte de Android con deserialización de Jackson
  • Obtenga un objeto json simple usando retrofit 2
  • Gson 2.2.2 causando un stackoverflow solo en 4.2.1
  • ¿Por qué recibo una respuesta vacía cuando mi aplicación android llama a mi API en mi servidor?
  • ¿Cómo buscar información de usuario de Google GAIA ID?
  • Comparación de rendimiento y usabilidad de las bibliotecas Android JSON
  • JSONArray respuesta con Volley para Android
  • 6 Solutions collect form web for “Android Json y valores nulos”

    Debido a que JSONObject # getString devuelve un valor si existe la clave dada, no es nula por definición. Ésta 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 JSONException si no existe dicha asignación. Así que no puedes llamar directamente a este método.

     json.getString("bye") 

    Si los datos pueden estar vacíos (puede que no exista la clave), pruebe

     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 se obtiene es String "null" no nulo.

    Tu deberías usar

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

    Primero verifique con isNull() …. si no puede trabajar intente entonces belows

    Y también tiene JSONObject.NULL para comprobar 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 verifique resultObject.getString("username").trim().eqauls("null")

    Si primero debe analizar json y manejar el objeto más adelante, deje que pruebe 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; } 

    He aquí un método de ayuda que utilizo para que pueda obtener cadenas JSON con sólo una 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 su valor de cadena o establecerá con seguridad su variable de cadena a null. Utilizo a Gson siempre que puedo evitar escollos como éstos. Maneja valores nulos mucho mejor en mi opinión.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.