Compruebe si un determinado objeto JSON está disponible o no

Tengo el archivo de JSON como abajo que tiene que ser vertido en un ArrayList:

{ "main1" : [ { "child1" : valueA, "child2" : valueB, "child3" : valueC, }, { "child1" : value1, "child3" : value3, }, ], "main2" : "valueMain2" } 

El elemento child2 tiene que ser verificado si existe o no y entonces se toma el valor. Puede ver que no aparece en la segunda matriz.

Estoy usando Native JSON (org.JSON) El código Java está abajo:

 ArrayList<HashMap<String,String>> myList = new ArrayList<HashMap<String,String>>(); JSONObject json = <my_json_object>; JSONObject getchild2; JSONArray jArray = <my_json_object>.getJSONArray("main1"); for(int j = 0; j < jArray.length(), j++){ HashMap<String,String> map = new HashMap<String,String>(); map.put("First Value", jArray.getJSONObject(j).getString("child1")); map.put("Third Value", jArray.getJSONObject(j).getString("child3")); getchild2 = jArray.getJSONObject(j).getJSONObject("child2"); if(getchild2 == null){ map.put("Second Value", "Some Dummy Value"); } else { map.put("Second Value", jArray.getJSONObject(j).getString("child2")); } myList.add(map); } 

¿Cómo puedo conseguir esto?

<my_json_object> utiliza el análisis de URL nativo al obtener la respuesta HTTP de una solicitud de URL que se encuentra aquí: http://mobisys.in/blog/2012/01/parsing-json-from-url-in-android/

No funciona como el error está abajo:

 E/AndroidRuntime(664): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 

De todos modos, tengo la solución con algunos Googling: lo re-enmarcado como,

  if (!jArray.getJSONObject(j).has("child2")) { map.put("Second Value", "NA"); } else { map.put("Second Value", jArray.getJSONObject(j).getString("child2")); } 

Creación del objeto JSONObject getchild2 = jArray.getJSONObject (j) .getJSONObject ("child2"); Era bastante, innecesario.

Y esto funciona, bastante perfectamente! Consulte esto para más detalles: Comprobación de si existe subobjeto en JSON

¡Gracias a todos por la ayuda!

 getJSONObject("child2"); 

Lanzará una excepción si child2 no existe. Prueba esto en su lugar:

 getchild2 = jArray.getJSONObject(j).optJSONObject("child2"); 

De esta manera usted no tiene que tomar una excepción si child2 no existe y en su lugar puede comprobar si hay null.

Prueba esto:

 {"main1" : [{ "id":"1" "child1" : "valueA", "child2" : "valueB", "child3" : "valueC", }, { "id":"2" "child1" : "value1", "child3" : "value3", }] } 
  • ¿Cómo se envía una matriz de objetos personalizados entre actividades?
  • Creación de un Arraylist de objetos
  • Referencia fuerte de Android
  • Biblioteca de reconocimiento de imágenes / API para iPhone / Android
  • Obtención de base de datos SQLite y almacenamiento en una matriz de objetos
  • crear un adaptador para rellenar Spinner con objetos
  • JSONObject analiza objetos de diccionario
  • Asignar largo a Long en Java
  • Android: Comparar dos ArrayList de objetos y encontrar unmatching ids de la segunda ArrayList
  • Edición Parcelable de Android
  • Objeto JSON a listView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.