Cómo analizar el arreglo JSON (no el objeto Json) en Android

Tengo problemas para encontrar la forma 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 forma diferente (en otras palabras, si tenía el objeto json devuelto en lugar de una matriz de objetos). Pero es todo lo que tengo y tengo que ir con eso.

* EDITAR: Es un json válido. Hice una aplicación para iPhone usando este json, ahora tengo que hacerlo para Android y no puedo resolverlo. Hay muchos ejemplos, pero todos están relacionados con JSONObject. Necesito algo para JSONArray.

¿Puede alguien 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"); } 

Espero eso ayude.

Voy a dar un pequeño ejemplo de Jackson :

Primero crea un titular 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 list = mapper.readValue(jsonString, new TypeReference>() {}); 

Usando elementos de 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 

Salida:

 name1 url1 name2 url2 

Crea una clase para contener los objetos.

 public class Person{ private String name; private String url; //Get & Set methods for each field } 

Luego deserializar de la siguiente manera:

 Gson gson = new Gson(); Person[] person = gson.fromJson(input, Person[].class); //input is your String 

Artículo de referencia: http://blog.patrickbaumann.com/2011/11/gson-array-deserialization/

En este ejemplo, hay varios objetos dentro de una matriz json. Es decir,

Esta es la matriz json: [{“nombre”: “nombre1”, “url”: “url1”}, {“nombre”: “nombre2”, “url”: “url2”}, …]

Este es un objeto: {“nombre”: “nombre1”, “url”: “url1”}

Suponiendo que tiene el resultado para una variable String llamada jSonResultString:

 JSONArray arr = new JSONArray(jSonResultString); //loop through each object for (int i=0; i 

@Stebra Vea este ejemplo. Esto puede ayudarte.

 public class CustomerInfo { @SerializedName("customerid") public String customerid; @SerializedName("picture") public String picture; @SerializedName("location") public String location; public CustomerInfo() {} } 

Y cuando obtienes el resultado; analizar como este

 List customers = null; customers = (List)gson.fromJson(result, new TypeToken>() {}.getType()); 

Algunas grandes sugerencias ya se mencionaron. Usar GSON es muy útil, y para hacer la vida aún más fácil, puedes probar este sitio web. Se llama jsonschema2pojo y hace exactamente eso:

Le das tu json y genera un objeto java que puede pegar en tu proyecto. Puede seleccionar GSON para anotar sus variables, por lo que extraer el objeto de su JSON es aún más fácil.

Mi caso Cargar del servidor Ejemplo …

 int jsonLength = Integer.parseInt(jsonObject.getString("number_of_messages")); if (jsonLength != 1) { for (int i = 0; i < jsonLength; i++) { JSONArray jsonArray = new JSONArray(jsonObject.getString("messages")); JSONObject resJson = (JSONObject) jsonArray.get(i); //addItem(resJson.getString("message"), resJson.getString("name"), resJson.getString("created_at")); } 

Espero que ayude

  URL url = new URL("your URL"); connection = (HttpURLConnection) url.openConnection(); connection.connect(); InputStream stream = connection.getInputStream(); BufferedReader reader; reader = new BufferedReader(new InputStreamReader(stream)); StringBuffer buffer = new StringBuffer(); String line = ""; while ((line = reader.readLine()) != null) { buffer.append(line); } //setting the json string String finalJson = buffer.toString(); //this is your string get the pattern from buffer. JSONArray jsonarray = new JSONArray(finalJson); 

La publicación anterior lo sé, pero a menos que haya entendido mal la pregunta, esto debería ser el truco:

 s = '[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"}]'; eval("array=" + s); for (var i = 0; i < array.length; i++) { for (var index in array[i]) { alert(array[i][index]); } 

}