Estoy creando una aplicación para Android que necesita descargarse y sincronizarse con una base de datos en línea, estoy enviando mi consulta desde la aplicación a una página php que devuelve las filas relevantes de una base de datos en formato JSON.
¿Puede alguien decirme la mejor manera de iterar a través de una matriz JSON?
Recibo una variedad de objetos:
[{json object},{json object},{json object}]
¿Cuál es el código más simple que podría usar para acceder a los JSONObjects en la matriz?
EDITAR: ahora que lo pienso, el método que usé para iterar el ciclo fue:
for (String row: json){
id = row.getInt("id");
name = row.getString("name");
password = row.getString("password");
}
Así que supongo que de alguna manera pude convertir el Json devuelto en una matriz iterable. ¿Alguna idea de cómo podría lograr esto?
Pido disculpas por mi falta de valor, pero tuve esto funcionando a partir de un ejemplo que encontré en la web y desde entonces no he podido encontrarlo.
Respuestas:
Lo he hecho de dos maneras diferentes,
1.) hacer un mapa
2.) haz un JSONArray de nombres
fuente
Creo que este código es corto y claro:
¿Es eso lo que estabas buscando?
fuente
Desafortunadamente,
JSONArray
no admiteforeach
declaraciones como:fuente
Cuando probé la sugerencia de @ vipw, me encontré con esta excepción:
The method getJSONObject(int) is undefined for the type JSONArray
Esto funcionó para mí en su lugar:
fuente
Si está utilizando la implementación JSON.org Java , que es de código abierto, puede hacer que JSONArray implemente la
Iterable
interfaz y agregar el siguiente método a la clase:Esto hará que todas las instancias de JSONArray sean iterables, lo que significa que la
for (Object foo : bar)
sintaxis ahora funcionará con él (tenga en cuenta que foo tiene que ser un Objeto, porque JSONArrays no tiene un tipo declarado). Todo esto funciona porque la clase JSONArray está respaldada por una simple ArrayList, que ya es iterable. Me imagino que otras implementaciones de código abierto serían igual de fáciles de cambiar.fuente
En matrices, busque:
fuente
Estás utilizando el mismo objeto Cast para cada entrada. En cada iteración, simplemente cambió el mismo objeto en lugar de crear uno nuevo.
Este código debería arreglarlo:
fuente
Mientras itera sobre una matriz JSON (org.json.JSONArray, integrada en Android), tenga cuidado con los objetos nulos ; por ejemplo, puede obtener en
"null"
lugar de una cadena nula .Un cheque puede verse así:
fuente