Foros del Web » Programando para Internet » Android »

Leer un json de varios parametros

Estas en el tema de Leer un json de varios parametros en el foro de Android en Foros del Web. He conseguido que mi app me devuleva un json desde un servidor remto, pero dicho json tiene varias lineas ... por ejemplo {pez:{color:azul,mide:16cm...}}{pez{color:verde,mi de:10cm}}... una ...
  #1 (permalink)  
Antiguo 30/07/2013, 00:24
 
Fecha de Ingreso: septiembre-2012
Ubicación: Sevilla
Mensajes: 144
Antigüedad: 12 años, 1 mes
Puntos: 0
Pregunta Leer un json de varios parametros

He conseguido que mi app me devuleva un json desde un servidor remto, pero dicho json tiene varias lineas ... por ejemplo
{pez:{color:azul,mide:16cm...}}{pez{color:verde,mi de:10cm}}...
una cosa así más o menos , entonses esto cuando yo lo recupero necesito ir leyendo uno por uno ya que son "objetos distintos". Lo he intentado hacer con un bucle for, e ir guardando esto en variables para ir trabajando con ellas, pero claro esto no lo puedo hacer así, de hecho ni funciona.. no se cómo lo tengo que hacer, espero que vosotros sí.
Muchas gracias y espero vuestras respuestas
  #2 (permalink)  
Antiguo 30/07/2013, 00:38
 
Fecha de Ingreso: octubre-2012
Ubicación: Madrid
Mensajes: 67
Antigüedad: 12 años
Puntos: 1
Respuesta: Leer un json de varios parametros

Buenas

tal y como tienes el json de respuesta, yo haría un cambio. Si vas a tener muchos elementos "iguales", osea, muchos elementos "pez", creo que es mejor que hagas un array dejando algo por el estilo:

Código:
{
    "pez": [
        {
            "color": "azul",
            "mide": "12 cm"
        },
        {
            "color": "verde",
            "mide": "32 cm"
        }
    ]
}
después, para obtener los elementos puedes hacer algo como esto con la librería org.json:

Código:
import org.json.JSONObject;
import org.json.JSONArray;



jObject = json;
jArray = new JSONArray();
jArray = jObject.getJSONArray("pez");

for (int i = 0; i < jArray.length(); i++) {
        Pez pez = new Pez();
	pez.setColorArray.getJSONObject(i).getString("color"));
	pez.setTamano(jArray.getJSONObject(i).getString("mide"));

	peces.add(pez);
}
Mas o menos eso...
  #3 (permalink)  
Antiguo 30/07/2013, 01:21
 
Fecha de Ingreso: septiembre-2012
Ubicación: Sevilla
Mensajes: 144
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Leer un json de varios parametros

Me he quedado un poco atrancada mira esto es lo que tengo :


Código Java:
Ver original
  1. //declaramos las variables a utilizar
  2.             String jsonId;
  3.             String jsonTipo;
  4.             String jsonTamaño;
  5.             String jsonColor;
  6.             //creamos el objeto json
  7.             JSONObject objeto=new JSONObject(txt);
  8.             JSONObject pecesJson=objeto.getJSONObject("pez");
  9.              //creo un array de peces
  10.                 Pez pececitos[] = new Pez[pecesJson.length()];
  11.             for(int i=0; i<pecesJson.length();i++) {
  12.                 //sacamos los datos y vamos creando los objetos
  13.                 jsonId=objeto.getString("id");
  14.                 jsonTipo=pecesJson.getString("tipo");
  15.                 jsonTamaño=pecesJson.getString("tamaño");
  16.                 jsonColor=pecesJson.getString("color");
  17.                 //creo objetos tipo pez
  18.                Pez p=new Pez(jsonId,jsonTipo,jsonTamaño,jsonColor);
  19.                 pececitos[i]=p;
  20.             }
  #4 (permalink)  
Antiguo 30/07/2013, 05:05
 
Fecha de Ingreso: octubre-2012
Ubicación: Madrid
Mensajes: 67
Antigüedad: 12 años
Puntos: 1
Respuesta: Leer un json de varios parametros

si has cambiado el json a como te comentaba anteriormente, el elemento pecesJson es un JSONArray, no un JSONObject.

Después, dentro del for, debes tomar los datos del jsonarray, no del jsonobject que tienes creado


osea, te creas un jsonobject con el string del json,
Código:
JSONObject objeto=new JSONObject(txt);
de ese json object tomas un elemento que como es un array será algo así:
Código:
pecesJson = new JSONArray();
pecesJson = objeto.getJSONArray("pez");
y dentro del for recorres pecesJson pillando los campos de cada elemento
Código:
for(int i=0; i<pecesJson.length();i++) 
{
        Pez pez = new Pez();
	pez.setColor(pecesJson.getJSONObject(i).getString("color"));
	pez.setTamano(pecesJson.getJSONObject(i).getString("mide"));

	peces.add(pez);
}
algo así más o menos...

Etiquetas: app, json, parametros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:29.