¿Cómo comprobar si existe una llave json?

Así pues, consigo algunos valores de JSON del servidor pero no sé si habrá un campo particular o no.

Asi como:

{ "regatta_name":"ProbaRegatta", "country":"Congo", "status":"invited" } 

Y a veces, habrá un campo extra como:

 { "regatta_name":"ProbaRegatta", "country":"Congo", "status":"invited", "club":"somevalue" } 

Me gustaría comprobar si el campo llamado "club" existe para que al analizar no voy a obtener org.json.JSONException: No hay valor para el club

La clase JSONObject tiene un método llamado "has":

http://developer.android.com/reference/org/json/JSONObject.html#has(java.lang.String)

Devuelve true si este objeto tiene una asignación de nombre. La asignación puede ser NULL.

Puede comprobar esta manera donde 'HAS' – Devuelve true si este objeto tiene una asignación de nombre. La asignación puede ser NULL.

  if (json.has("status")) { String status = json.getString("status")); } if (json.has("club")) { String club = json.getString("club")); } 

También puede comprobar usando 'isNull' – Devuelve true si este objeto no tiene asignación de nombre o si tiene una asignación cuyo valor es NULL.

  if (!json.isNull("club")) String club = json.getString("club")); 

JSONObject#has , proporcionando la key como entrada y compruebe si el método devuelve true o false . Usted también podría

Utilice optString lugar de getString :

Devuelve el valor asignado por nombre si existe, forzándolo si es necesario. Devuelve la cadena vacía si no existe tal correlación

Justo antes de leerlo, compruébelo como antes de leerlo

 JSONObject json_obj=new JSONObject(yourjsonstr); if(json_obj.isNull("club")) { //it's contain value to be read operation } else { //it's not contain key club or isnull so do this operation here } 

IsNull definición de función

 Returns true if this object has no mapping for name or if it has a mapping whose value is NULL. 

Documentación oficial debajo del enlace para la función isNull

http://developer.android.com/reference/org/json/JSONObject.html#isNull(java.lang.String)

Prueba esto

 if(!jsonObj.isNull("club")){ jsonObj.getString("club"); } 

Puede utilizar has

 public boolean has(String key) 

Determine si el JSONObject contiene una clave específica .

Ejemplo

 JSONObject JsonObj = new JSONObject(Your_API_STRING); //JSONObject is an unordered collection of name/value pairs if (JsonObj.has("address")) { //Checking address Key Present or not String get_address = JsonObj .getString("address"); // Present Key } else { //Do Your Staff } 
  • Android volley JsonObjectRequest que no devuelve ningún cuerpo sólo 200
  • JSONObject en JSONObject
  • Deserializar el mapa JSON usando Jackson no da el mapa correcto
  • Análisis del archivo json con gson
  • Cómo crear dinámicamente grupos y childs en listview expandible desde json en android?
  • Llame a .NET Webservice con Android
  • ¿Cómo puedo leer el archivo json de la tarjeta SD
  • Imagen local a través de json local en android
  • Actualizar elementos en un objeto JSONO
  • GSON / Jackson en Android
  • Varias llaves y valores de JSONObject no se guardarán en Parse
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.