Tengo un dato JSON que es algo como lo siguiente:
{"product":["{productTitle=ABCD , productImage=/abcd.jpg, productPath=CDEF.html, productPrice=$299}","{productTitle=EFGH, productImage=xxxx.jpg, productPath=ggfft.html, productPrice=$299}"]}
En mi página JSP estoy tratando de procesar los datos y usarlos.
A continuación se muestra la función que estoy utilizando para analizar cada nodo de la respuesta.
success : function(data) {
alert("successs");
alert("data.product" + data.product);
$.each(data.product, function(index) {
alert(data.product[index].productTitle);
});
},
aquí alert("data.product" + data.product);
me da la alerta con todo el JSON que está debajo del nodo del producto.
alert(data.product[index].productTitle);
- Esta alerta se muestra como "indefinida".
Necesito ayuda para analizar el JSON e imprimir cada uno de los "Titulo del producto"
Gracias por adelantado .
Respuestas
2 para la respuesta № 1data.product
es una matriz de cadenas, no objetos o JSON, tendrá que analizar las cadenas para obtener los datos.
puede usar expresiones regulares para transformar la cadena a JSON y luego a JSON.parse o $ .parseJSON para convertirla a objetos js pero es un poco desordenado, vea http://jsfiddle.net/nQE6J
$.each(data.product, function(index) {
alert(JSON.parse(data.product[index].replace(/=/g, ":").replace(/([a-z.A-Z$/d]+)/g, ""$1"")).productTitle);
});
0 para la respuesta № 2
El json que das es
{
"product":[
"{productTitle=ABCD , productImage=/abcd.jpg, productPath=CDEF.html, productPrice=$299}",
"{productTitle=EFGH, productImage=xxxx.jpg, productPath=ggfft.html, productPrice=$299}"
]
}
Sin embargo tienes que cambiar arriba en
{
"product":[
{"productTitle":"ABCD" ,
"productImage":"/abcd.jpg",
"productPath":"CDEF.html", "productPrice":"$299"},
....
]
}
Asi que
data.product[0].productTitle
es "ABCD"
0 para la respuesta № 3
prueba esto
var jdata = JSON.parse(data);
$.each(jdata.product, function(index, productdetail) {
alert(productdetail.productTitle);
});
0 para la respuesta № 4
Añadir
contentType : "application/json"
a su solicitud (y en el encabezado de Respuesta, que debe ser realizado automáticamente por su servidor web). jQuery luego interpreta automáticamente la Repsonse como objeto JSON y la analiza.
0 para la respuesta № 5
JSON.parse(data)
debería hacer el truco.
Edit: veo que ni siquiera es JSON dentro de la cadena. Use la respuesta de Musa para transformarla en JSON y luego use JSON.parse(data)
Como sugerí inicialmente.