Foros del Web » Programando para Internet » Javascript »

Problema parseo JSON

Estas en el tema de Problema parseo JSON en el foro de Javascript en Foros del Web. Hola, Tengo un problema a la hora de recorrer un JSON obtenido por medio de una invocación AJAX a un Servlet Java. Servlet Código: // ...
  #1 (permalink)  
Antiguo 17/05/2014, 10:06
 
Fecha de Ingreso: febrero-2006
Mensajes: 21
Antigüedad: 18 años, 1 mes
Puntos: 0
Problema parseo JSON

Hola,

Tengo un problema a la hora de recorrer un JSON obtenido por medio de una invocación AJAX a un Servlet Java.

Servlet
Código:
     // Recojo el array de Envios de BBDD
                Envio[] listaEnvios = DAO.getInstance().obtenEnvios();
		response.setContentType("text/html;charset=UTF-8");
		String[] stringarray = new String[listaEnvios.length];
		String jSONArrayString = null;
		ObjectMapper om = new ObjectMapper();

                // Convierto cada objeto Envio del array en un JSON
		for (int i=0; i<listaEnvios.length; i++)
		{
			String jsonString = om.writeValueAsString(listaEnvios[i]);
			
			stringarray[i] = jsonString;
		}

                // Convierto el array de JSONs en un JSON
		jSONArrayString = om.writeValueAsString(stringarray);

                // Respuesta del Servlet
		PrintWriter out = response.getWriter();
	    out.print(jSONArrayString);
	    out.close();
Javascript
Código:
        var listaEnvios = null;

	/* 
	 * Crea un objeto XMLHttpRequest o devuelve false si  
	 * el navegador no lo soporta.  
	 */
	function getXMLHttpRequest() {  
	  var xmlHttpReq;  
	  // Creación de un objeto XMLHttpRequest en navegadores que no son de Microsoft  
	  if (window.XMLHttpRequest) {  
	    xmlHttpReq = new XMLHttpRequest();  
	  } else if (window.ActiveXObject) {  
	    try {  
	      // Creación de un objeto XMLHttpRequest en las últimas versiones de Internet Explorer  
	      xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP");  
	    } catch (exp1) {  
	      try {  
	    	// Creación de un objeto XMLHttpRequest en las últimas versiones de Internet Explorer    
	        xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");  
	      } catch (exp2) {  
	        alert("Excepción en getXMLHttpRequest()!");  
	      };  
	    };  
	  }  
	  return xmlHttpReq;  
	} 

	/* 
	 * Ejecuta una petición AJAX
	 */  
	function makeRequest(url, params) {
	 	var xmlHttpRequest = getXMLHttpRequest();  
	  	xmlHttpRequest.open("POST", url, true);  
	  	xmlHttpRequest.onreadystatechange = getReadyStateHandler(xmlHttpRequest);
	  	xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
	  	xmlHttpRequest.send(params);  
	} 
	
	
	function getReadyStateHandler(xmlHttpRequest) {  
		// an anonynous function returned  
		// it listens to the XMLHttpRequest instance  
		return function() {  
			if (xmlHttpRequest.readyState == 4) {
				if (xmlHttpRequest.status == 200) {
					listaEnvios = JSON.parse(xmlHttpRequest.responseText);
			    	muestraEnvios();
			    } else {  
			    	alert("Http error " + xmlHttpRequest.status + ":" + xmlHttpRequest.statusText);  
			    };
			};
		};  
	} 


	
	/*
	 * Muestra el listado de envíos
	 */
	function muestraEnvios() {
		// Muestra por consola el array de JSONs formado correctamente
		console.log(listaEnvios);

		// Muestra por consola el primer JSON
		console.log(listaEnvios[0]);

		for (var i in listaEnvios)
		{
			// Muestra undefined
			console.log(listaEnvios[i]["id"]);

			// Muestra cada elemento de cada JSON del array por consola caracter a caracter
			for (var j in listaEnvios[0])
			{
				console.log(j);
			}

		};
	}
El problema está en que no consigo mostrar los elementos de cada JSON del array a pesar de que éste si parece estar bien formado. Como indico en los comentarios de la función muestraEnvios() del código javascript, el array lo muestra correctamente, así como cada JSON que contiene. Pero si accedo a un elemento, muestra undefined y si intento mostrarlo recorriendo el JSON con un bucle for, lo muestra caracter a caracter como si fuera un simple string.

¿Estoy haciendo mal la conversión en el servlet? Si es así, ¿por qué en la consola javascript veo el array de JSONs y cada JSON?

Agradecería cualquier ayuda.

Muchísimas gracias de antemano
Un saludo

Etiquetas: js, 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:06.