挑战: 如何阅读/解析以下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 :(得分: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]);
});
答案 1 :(得分: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
循环。