Foros del Web » Programando para Internet » Javascript »

Leer array JSON con Javascript

Estas en el tema de Leer array JSON con Javascript en el foro de Javascript en Foros del Web. Hola. Estoy intentando leer un array de objetos con Javascript. El array lo devuelve un WebService en formato JSON: Código: [{"id":1,"description":"DESC1"},{"id":2,"description":"DESC2"},{"id":3,"description":"DESC3"}] El código que utilizo ...
  #1 (permalink)  
Antiguo 22/05/2012, 05:46
 
Fecha de Ingreso: mayo-2012
Mensajes: 2
Antigüedad: 12 años, 7 meses
Puntos: 0
Leer array JSON con Javascript

Hola.

Estoy intentando leer un array de objetos con Javascript. El array lo devuelve un WebService en formato JSON:

Código:
[{"id":1,"description":"DESC1"},{"id":2,"description":"DESC2"},{"id":3,"description":"DESC3"}]
El código que utilizo para la lectura es el siguiente:

Código:
types = eval('(' + http_request.responseText + ')');
alert(types.length);
for(i=0; i<types.length; i++) {
	alert(types[i]);
}
El primer alert me indica que efectivamente el array types ahora tiene 3 elementos, pero no encuentro la forma de acceder a ellos ya que si imprimo types[x] sólo se me muestra "Object object" y si intento acceder a alguno de los elementos haciendo, por ejemplo, types[0].id también falla.

Imagino que el error está en el modo de parsear el array JSON pero no he encontrado como hacerlo correctamente.

Gracias por su ayuda.
  #2 (permalink)  
Antiguo 22/05/2012, 07:06
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 9 meses
Puntos: 47
Respuesta: Leer array JSON con Javascript

creo que estas imprimiendo mal, en el caso de los ids debes poner los 2 puntos de la cadena id juntos y concatenarle el numero, lo mismo en el caso del texto en caso que desc1 desc2 y desc3 sean variables prueba poniendolo asi:

Código Javascript:
Ver original
  1. respuestaServidor = "[{id:"+1+",description:' "+DESC1+" '},{id:"+2+",description:' " + DESC2 " '},{id:" + 3 + ",description:' "DESC3 " '}]";

te recuerdo que estoy suponiendo que DESC1 DESC2 y DESC3 son variables en caso que no lo sean no hace falta ni los mas ni las comillas dobles x ej: description:'DESC1 MI TEXTO'}...

Proba a ver si te funciona.

Saludos
  #3 (permalink)  
Antiguo 22/05/2012, 07:27
 
Fecha de Ingreso: mayo-2012
Mensajes: 2
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Leer array JSON con Javascript

Gracias djaevi.

La cadena devuelta por el servidor estaba bien formada, no la hacía yo, la hacía automáticamente con jersey.

Por eso yo pensaba que el problema estaba a la hora de leer la respuesta del servidor que no lo hubiese programado bien (la verdad, he trabajado muy poco con javascript).

Al final resultó que estaba todo bien y funcionaba tal y como estaba. Se ve que quizás el navegador tenía cacheado alguna versión anterior de la página y no me detectaba los cambios en el código. La verdad es que no encontraba el fallo por ningún lado.
  #4 (permalink)  
Antiguo 22/05/2012, 07:58
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 6 meses
Puntos: 1012
Respuesta: Leer array JSON con Javascript

por dios!! es frustrante ver una y otra vez lo mismo. no uses eval(), en su lugar usa json.parse()
Cita:
var types = '[{"id":1,"description":"DESC1"},{"id":2,"descriptio n":"DESC2"},{"id":3,"description":"DESC3"}]';

var z = JSON.parse(types);

for(var i in z) {
for(var j in x[i]) {
console.log(j, '-->' ,z[i][j]);
}
}
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 22/04/2014, 11:32
 
Fecha de Ingreso: mayo-2008
Mensajes: 9
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Leer array JSON con Javascript

Tengo una duda similar, en mi caso hago una consulta ajax a un cURL que me devuelve un array, (json decodificado) y necesito acceder a un parametro de los que recibo para hacer un condicional, despues de realizar la consulta el ajax me devuelve el siguiente array

Array
(
[res] => 1
[msg] => Rooms available!
)

mi pregunta es: como puedo obtener una variable que contenga el primer parametro devuelto, es decir, res, para poder realizar un condicional partiendo de el?

llevo todo el dia en esto y nada que lo consigo.

Gracias
  #6 (permalink)  
Antiguo 22/04/2014, 20:04
 
Fecha de Ingreso: julio-2008
Mensajes: 91
Antigüedad: 16 años, 5 meses
Puntos: 6
Respuesta: Leer array JSON con Javascript

También puedes probar así:

Código Javascript:
Ver original
  1. //Este es el JSON que recibes
  2. var json = '[{"id":1,"description":"DESC1"},{"id":2,"description":"DESC2"},{"id":3,"description":"DESC3"}]';
  3. console.log(json);
  4.  
  5. //Lo parseamos para convertirlo en objeto
  6. var types = JSON.parse(json);
  7. console.log(types);
  8.  
  9. //Y lo recorremos
  10. for(x=0; x<types.length; x++) {
  11.     console.log(types[x].id);
  12.     console.log(types[x].description);
  13. }
  #7 (permalink)  
Antiguo 22/04/2014, 20:16
 
Fecha de Ingreso: julio-2008
Mensajes: 91
Antigüedad: 16 años, 5 meses
Puntos: 6
Respuesta: Leer array JSON con Javascript

Estimado fbavaro56

Tal como indicas que ya recibes el array ya decodificado en JSON:
Código Javascript:
Ver original
  1. var json = '[{"res":1,"msg":"Rooms available!"}]';

Es parecido al primer caso, parseas y luego tomas el primer indice de tu nuevo objeto
Código Javascript:
Ver original
  1. var response = JSON.parse(json);
  2. console.log(response[0].res);
  3. if (response[0].res==1){
  4. //lo que deseas hacer
  5. }
  #8 (permalink)  
Antiguo 23/04/2014, 14:50
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 11 meses
Puntos: 29
Respuesta: Leer array JSON con Javascript

Hola IsaBelM

Cita:
por dios!! es frustrante ver una y otra vez lo mismo. no uses eval(), en su lugar usa json.parse()
Nunca he entendido porque eval es inseguro ya que si javascript se ejecuta en el navegador este lo puede editar como quiere por lo tanto puede ejecutar su código. Entonces porque dices que es inseguro?

Saludos
  #9 (permalink)  
Antiguo 23/04/2014, 15:59
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 7 meses
Puntos: 528
Respuesta: Leer array JSON con Javascript

No veo que se diga que es inseguro, aunque el tema ya tiene su tiempo...

Por otra parte, es conveniente aclarar que eval permitirá ejecutar cualquier cosa, mientras que JSON.parse() evaluará si la cadena es un json válido.
  #10 (permalink)  
Antiguo 23/04/2014, 23:44
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 11 meses
Puntos: 29
Respuesta: Leer array JSON con Javascript

Cita:
Iniciado por ocp001a Ver Mensaje
Por otra parte, es conveniente aclarar que eval permitirá ejecutar cualquier cosa, mientras que JSON.parse() evaluará si la cadena es un json válido.
Cierto pero igualmente en el navegador puedes ejecutar tu script.
Creo que dicen que eval es inseguro en caso de un XSS.

Etiquetas: deserializar, json
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 14:36.