Cómo analizar JSON Array (Not Json Object) 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 analizar si el JSON fue escrito de manera diferente (En otras palabras, si tuviera json objeto devuelto en lugar de una matriz de objetos). Pero es todo lo que tengo y tengo que ir con él.
- Diseño de motor de juego para Android: ¿cómo sincronizar el bucle de juego y el hilo de actualización de la galería?
- Apache Cordova CordovaActividad no se puede resolver
- Ant jar error: Execute failed: java.io.IOException: No se puede ejecutar el programa ... $ {aapt} ": error = 2, No hay tal archivo o directorio
- Problemas de memoria con frecuentes conversiones de Integer.toString ()
- Formas de proxy un InputStream
* EDIT: Es un json válido. Hice una aplicación de iPhone usando este json, ahora tengo que hacerlo por Android y no puedo entenderlo. Hay muchos ejemplos por ahí, pero todos ellos están relacionados con JSONObject. Necesito algo para JSONArray.
¿Puede alguien por favor darme alguna pista, o un tutorial o un ejemplo?
Muy apreciado !
- Androide. ARTE para el error de optimización de bucle. Función java simple con resultado inesperado
- Gap del teléfono cmd: El comando falló con el código de salida ENOENT
- Buenas Prácticas: Validación de Entradas (Android)
- ¿Cuál es la mejor manera de serializar una imagen (compatible con Swing) de Java a Android?
- Aplicación para Android que muestra diferentes diseños a la vez con hdmi
- Obtener la dirección del mapa o la dirección de ubicación en Android
- Combinación de java y nodejs para la aplicación android
- Autofocus de la cámara Android cuando el usuario mantiene la cámara inmóvil
Utilice el siguiente fragmento para analizar el 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 cree 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 analiza la lista de MyDataHolders
String jsonString = // your json ObjectMapper mapper = new ObjectMapper(); List<MyDataHolder> list = mapper.readValue(jsonString, new TypeReference<ArrayList<MyDataHolder>>() {});
Uso de 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); } }
Salida:
name1 url1 name2 url2
Cree una clase para contener los objetos.
public class Person{ private String name; private String url; //Get & Set methods for each field }
Luego deserialice como sigue:
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: {"name": "name1", "url": "url1"}
Suponiendo que usted tiene el resultado a una variable String llamada jSonResultString:
JSONArray arr = new JSONArray(jSonResultString); //loop through each object for (int i=0; i<arr.length(); i++){ JSONObject jsonProductObject = arr.getJSONObject(i); String name = jsonProductObject.getString("name"); String url = jsonProductObject.getString("url"); }
@Stebra Vea este ejemplo. Esto puede ayudarle.
public class CustomerInfo { @SerializedName("customerid") public String customerid; @SerializedName("picture") public String picture; @SerializedName("location") public String location; public CustomerInfo() {} }
Y cuando usted consigue el resultado; Analizar como este
List<CustomerInfo> customers = null; customers = (List<CustomerInfo>)gson.fromJson(result, new TypeToken<List<CustomerInfo>>() {}.getType());
Algunas sugerencias grandes ya se mencionan. El uso de GSON es realmente útil en efecto, y para hacer la vida aún más fácil puede probar este sitio web Se llama jsonschema2pojo y hace exactamente eso:
Usted le da su json y genera un objeto java que puede pegar en su proyecto. Usted puede seleccionar GSON para anotar sus variables, por lo que extraer el objeto de su json se vuelve aún más fácil!
Mi ejemplo Load From Server 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);
Antiguo post lo sé, pero a menos que haya malinterpretado la pregunta, esto debería hacer 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]); }
}
- ¿Cómo hacer una forma con la esquina redonda izquierda-redondeada y la esquina redonda izquierda-inferior?
- ¿Cómo añadir dinámicamente contenido a un diseño lineal?