2012-08-17 106 views
0

我有一個JSON數據是類似如下::JSON解析jQuery中

{"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

感謝提前。

回答

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); 
}); 
+0

怎麼可能實現?我是jquery的新手。對於術語抱歉。 – Sabya 2012-08-17 07:08:35

+1

@sabyasachi你可以改變data.product中的數據格式爲JSON嗎? – Musa 2012-08-17 07:12:22

+0

對我來說,改變JSON格式的格式非常困難。我們不能使用這種格式並解析它嗎? – Sabya 2012-08-17 07:21:03

0
JSON.parse(data) 

應該這樣做。

編輯:我看到它甚至沒有JSON內的字符串。使用Musa的答案將其轉換爲JSON,然後按照我最初的建議使用JSON.parse(data)

0

試試這個

var jdata = JSON.parse(data); 
    $.each(jdata.product, function(index, productdetail) { 
     alert(productdetail.productTitle); 
    }); 
+0

我正在嘗試這個。 – Sabya 2012-08-17 07:28:20

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」

0

添加

contentType : "application/json" 

到您請求(和響應頭,它會自動通過您的Web服務器來完成)。然後jQuery自動將Repsonse解釋爲JSON對象並對其進行解析。

+0

我已經做了那個。 – Sabya 2012-08-17 07:23:41

+0

迴應。的setContentType( 「應用程序/ JSON;字符集= UTF-8」); – Sabya 2012-08-17 07:24:05

+0

你的網絡服務器的答案是「contentType:」application/json「 」? – Stefan 2012-08-17 07:31:18