2012-10-31 49 views
1

挑戰: 如何讀取/解析以下JSON:如何使用jQuery讀取多對象JSON字符串

> {"d":"{\"NewDataSet\":{\"Table\":{\"LICENSE_PLATE\":\"PLATE 
> 1\",\"PARKING_LOCATION\":\"1001\",\"START_TIME\":\"05:05:00\"}}}"} 

嘗試的途徑:

var objNDS = jQuery.parseJSON(e.d); //where e.d is the above returned json 
var objTbl = objNDS.NewDataSet.Table; 
var tblARR = []; 
$.each(objTbl, function (i, val) { 
    tblARR.push([val.LICENSE_PLATE, val.PARKING_LOCATION, val.START_TIME]); 
}); 

感謝您的幫助。

+0

什麼是你的 「嘗試貼近」 的結果?????? – BZink

+0

「Table」未定義 – torvictech

回答

2

Table,如圖所示,是不是列表。使用$.each將遍歷其鍵/值對,所以你必須:

i     val 
LICENSE_PLATE  PLATE1 
PARKING_LOCATION 1001 
START_TIME  05:05:00 

可能是你輸入錯了,你的意思其實是:

...\"Table\":[{\"LICENSE_PLATE\":...}, {\"LICENSE_PLATE\":...}]... 

如果輸入的是正確的,和Table應該只有一個值,不使用each和查詢objTbl,而不是直接:

tblARR.push([objTbl.LICENSE_PLATE, objTbl.PARKING_LOCATION, objTbl.START_TIME]); 

更新:如果兩種形式都可以顯示,只是測試,如果objTbl是一個數組,如果沒有,把它包裝(理想情況下你的服務器應該把這個數據標準化,雖然)。然後你原來的代碼將工作,因爲它是:

if (!(objTbl instanceof Array)) 
    objTbs = [objTbl]; 
$.each(objTbl, function(i, val) { 
    tblARR.push([val.LICENSE_PLATE, val.PARKING_LOCATION, val.START_TIME]); 
}); 
+0

看來,我的服務器以下列格式返回單個記錄的json:{「d」:「{\」NewDataSet \「:{\」Table \「:{\」LICENSE_PLATE \「 :\「PLATE 1 \」,\「PARKING_LOCATION \」:\「1001 \」,\「START_TIME \」:\「05:05:00 \」}}}「} .... while multiplegrams will return: {「d」:「{\」NewDataSet \「:{\」Table \「:[{\」LICENSE_PLATE \「:\」PLATE 1 \「,\」PARKING_LOCATION \「:\」1001 \「,\」START_TIME \ 「:\」 5時05分00秒\ 「},{\」 LICENSE_PLATE \ 「:\」 板2 \ 「\ 」PARKING_LOCATION \「:\ 」1002 \「,\ 」START_TIME \「:\」 10: 10:10 \ 「}]}}」}。因此,你有什麼建議,以檢查每個場景的最佳方法是什麼? – torvictech

+0

'objTbl的instanceof Array'。檢查更新的答案。只有一個問題:如果在返回的設置沒有記錄會發生什麼?你也可能想要防範這種情況。 – mgibsonbr

0

我試圖解釋你試圖完成並放在一起JS提琴實現什麼。請注意,我必須更改「e」變量的格式。

var e = {"d":"{\"NewDataSet\":{\"Table\":[{\"Plate\":{\"LICENSE_PLATE\":\"PLATE 1\",\"PARKING_LOCATION\":\"1001\",\"START_TIME\":\"05:05:00\"}}, {\"Plate\": {\"LICENSE_PLATE\":\"PLATE 1\",\"PARKING_LOCATION\":\"1001\",\"START_TIME\":\"05:05:00\"}}]}}"}; 

然後你循環與常規for循環。

Link是: http://jsfiddle.net/Dracorat/EFcjA/10/

相關問題