Cómo analizar una matriz JSON (no un objeto Json) en Android
Tengo problemas para encontrar una manera de analizar JSONArray. Se parece a esto:
[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"},...]
Sé cómo analizarlo si el JSON se escribió de manera diferente (en otras palabras, si me devolvieran un objeto json en lugar de una matriz de objetos). Pero es todo lo que tengo y tengo que acompañarlo.
*EDITAR: Es un json válido. Creé una aplicación para iPhone usando este json, ahora necesito hacerlo para Android y no puedo entenderlo. Hay muchos ejemplos, pero todos están relacionados con JSONObject. Necesito algo para JSONArray.
¿Alguien puede darme alguna pista, un tutorial o un ejemplo?
Muy apreciado !
utilice el siguiente fragmento para analizar JsonArray.
JSONArray jsonarray = new JSONArray(jsonStr);
for (int i = 0; i < jsonarray.length(); i++) {
JSONObject jsonobject = jsonarray.getJSONObject(i);
String name = jsonobject.getString("name");
String url = jsonobject.getString("url");
}
Sólo daré un pequeño ejemplo de Jackson :
Primero cree un contenedor de datos que tenga los campos de la cadena JSON
// imports
// ...
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyDataHolder {
@JsonProperty("name")
public String mName;
@JsonProperty("url")
public String mUrl;
}
Y analizar la lista de MyDataHolders
String jsonString = // your json
ObjectMapper mapper = new ObjectMapper();
List<MyDataHolder> list = mapper.readValue(jsonString,
new TypeReference<ArrayList<MyDataHolder>>() {});
Usando elementos de la lista
String firstName = list.get(0).mName;
String secondName = list.get(1).mName;
public static void main(String[] args) throws JSONException {
String str = "[{\"name\":\"name1\",\"url\":\"url1\"},{\"name\":\"name2\",\"url\":\"url2\"}]";
JSONArray jsonarray = new JSONArray(str);
for(int i=0; i<jsonarray.length(); i++){
JSONObject obj = jsonarray.getJSONObject(i);
String name = obj.getString("name");
String url = obj.getString("url");
System.out.println(name);
System.out.println(url);
}
}
Producción:
name1
url1
name2
url2