2012-10-31 46 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/

相关问题