Entonces, obtengo algunos valores JSON del servidor, pero no sé si habrá un campo en particular o no.
Asi como:
{ "regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited"
}
Y a veces, habrá un campo adicional como:
{ "regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited",
"club":"somevalue"
}
Me gustaría verificar si el campo llamado "club" existe para que al analizar no obtenga org.json.JSONException: No hay valor para el club
Respuestas:
La clase JSONObject tiene un método llamado "has":
http://developer.android.com/reference/org/json/JSONObject.html#has(java.lang.String)
fuente
Integer
tipo?Integer
una clave suena como una mala práctica. JSON debe estar con una clave de cadena y un valor de lo que necesite.Puede verificar de esta manera donde 'HAS': devuelve verdadero si este objeto tiene una asignación de nombre. La asignación puede ser NULL.
fuente
podría
JSONObject#has
, proporcionando lakey
entrada como y comprobar si el método devuelvetrue
ofalse
. Tambien podriausar en
optString
lugar degetString
:fuente
getString
hubiera devuelto una cadena vacía,optString
también devolvería una cadena vacía. La suposición le haría creer que la propiedad no está disponible en la situación de OP.Puedes usar
has
Determine si JSONObject contiene una clave específica .
Ejemplo
fuente
justo antes de leer la clave, compruébelo como antes de leer
Definición de función isNull
documentación oficial debajo del enlace para la
isNull
funciónhttp://developer.android.com/reference/org/json/JSONObject.html#isNull(java.lang.String)
fuente
Prueba esto
fuente
isNull
en realidad es para verificar si la asignación es nula, no para verificar la disponibilidad de un miembro json.Una mejor manera, en lugar de usar un condicional como:
es simplemente usar el método existente optString (), así:
el método optString ("clave") devolverá una Cadena vacía si la clave no existe y, por lo tanto, no generará una excepción.
fuente
Json tiene un método llamado
containsKey()
.Puede usarlo para verificar si cierta clave está contenida en el conjunto Json.
fuente
Funciona en todos los navegadores actuales.
fuente
Prueba esto:
fuente
Puede probar esto para verificar si la clave existe o no:
fuente
Solo estoy agregando otra cosa, en caso de que solo desee verificar si se crea algo en JSONObject o no, puede usar length (), porque de forma predeterminada cuando se inicializa JSONObject y no se inserta ninguna llave, solo tiene llaves vacías
{}
y el uso tiene (Tecla de cadena) no tiene ningún sentido.Entonces puedes escribir
if (jsonObject.length() > 0)
y hacer tus cosas directamente .¡Feliz aprendizaje!
fuente
Puede usar JsonNode # hasNonNull (String fieldName) , combina el método has y la verificación si es un valor nulo o no
fuente