0

我有一个类似于以下内容的 JSON 数据::

{"product":["{productTitle=ABCD , productImage=/abcd.jpg, productPath=CDEF.html, productPrice=$299}","{productTitle=EFGH, productImage=xxxx.jpg, productPath=ggfft.html, productPrice=$299}"]}

我正在尝试处理数据并使用它的 JSP 页面。

以下是我用来解析响应的每个节点的函数。

success : function(data) {
                            alert("successs");
                            alert('data.product' + data.product);
                            $.each(data.product, function(index) {
                                     alert(data.product[index].productTitle);


                                 });

                         },

这里alert('data.product' + data.product); 给了我产品节点下的整个 JSON 的警报。

alert(data.product[index].productTitle); -- 此警报显示为“未定义”。

我需要帮助来解析它的 JSON 并打印每个“ productTitle

提前致谢 。

4

5 回答 5

2

data.product是字符串数组而不是对象或 JSON,您必须解析字符串才能获取数据。

您可以使用正则表达式将字符串转换为 JSON,然后使用 JSON.parse 或 $.parseJSON 将其转换为 js 对象,但它有点混乱,请参阅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);
});
于 2012-08-17T07:06:11.320 回答
0
JSON.parse(data) 

应该做的伎俩。

编辑:我看到它甚至不是字符串中的 JSON。使用 Musa 的答案将其转换为 JSON,然后JSON.parse(data)按照我最初的建议使用。

于 2012-08-17T07:03:02.607 回答
0

尝试这个

   var jdata = JSON.parse(data);
   $.each(jdata.product, function(index, productdetail) {
         alert(productdetail.productTitle);
   });
于 2012-08-17T07:05:41.950 回答
0

你给的json是

{
"product":[
"{productTitle=ABCD , productImage=/abcd.jpg, productPath=CDEF.html, productPrice=$299}",
"{productTitle=EFGH, productImage=xxxx.jpg, productPath=ggfft.html, productPrice=$299}"
]
}

但是,您必须将上面更改为

{
"product":[
    {"productTitle":"ABCD"  , 
     "productImage":"/abcd.jpg", 
     "productPath":"CDEF.html", "productPrice":"$299"},
    ....
]
}


data.product[0].productTitle“ABCD”也是如此

于 2012-08-17T07:09:00.453 回答
0

添加

contentType : "application/json"

对您的请求(以及在响应标头中,这应该由您的网络服务器自动完成)。jQuery 然后自动将 Repsonse 解释为 JSON 对象并对其进行解析。

于 2012-08-17T07:20:18.283 回答