Cómo analizar una matriz JSON (no un objeto Json) en Android

Resuelto SteBra asked hace 54 años • 11 respuestas

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 !

SteBra avatar Jan 01 '70 08:01 SteBra
Aceptado

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");
}
Spring Breaker avatar Sep 24 '2013 09:09 Spring Breaker

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;
vilpe89 avatar Sep 24 '2013 10:09 vilpe89
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
Maxim Shoustin avatar Sep 24 '2013 09:09 Maxim Shoustin