1

挑战:如何读取/解析以下 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]);
});

谢谢你的帮助。

4

2 回答 2

2

如图所示,您Table的 不是列表。Using$.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]);
});
于 2012-10-31T22:16:18.917 回答
0

我试图解释您要完成的工作,并将 JS fiddle 实现放在一起。请注意,我必须更改“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循环循环。

链接是:http: //jsfiddle.net/Dracorat/EFcjA/10/

于 2012-10-31T23:04:26.530 回答