我重新启动了主题:
我有点傻了。问题是我向JSON展示了一点,因为它是一个机密文件。 JSON的嵌套方式如下:"01": {
"titel": "json",
"a1": 001,
"a2": {
"b1": 002,
"b2": 003,
"b3": "b3"
},
"a3": {
"c1": "c1",
"c2": "c2",
"c3": 003,
"c4": 004,
"c5": 005,
"c6": {
"d1": 001,
"d2": 002,
"d3": 003
}
},
"a4": {
"e1": "e1",
"e2": "e2",
"e3": 003,
"e4": 004,
"e5": null,
"f1": {
"g1": 001,
"g2": 002,
"g3": 003
}
},
"a5": [
{
"h1": "h2",
"h2": 002,
"h3": 003,
"h4": 004,
"h5": 005,
"h6": 006,
"h7": 007,
"h8": 008,
"h9": 009,
"h10": 010,
"h11": -011,
"h12": -012,
"h13": -013
}
],
"metaInfo": {
"erstellt": "2016-12-20T10:54:14.459+0000",
"version": "1"
}
},
我将这个结构中的18个从“01”变为“18”作为对象名称。所以我从一开始就用这样一个简单的代码开始:
$.getJSON('data.json', function(data) {
console.log(data);
console.log(data["01"].a5.h1[0]);
});
在控制台中我在第二个日志中出现故障:“未捕获的TypeError:无法读取未定义的属性'a5'”。第一个console.log正确显示了JSON。
那么我的失败在哪里?
答案 0 :(得分:1)
你正在使用错误的for循环,你应该做像
这样的事情for(key in data){do something}
答案 1 :(得分:0)
以下是循环对象键值的方法。现在,您可以在表创建中实现此功能。
function drawTable(data) {
for (var key in data) {
alert("property "+key+ " is " + data[key] );
}
}
如果你只想要非空的elemens,那么试试这个
function drawTable(data) {
for (var key in data) {
if (data.hasOwnProperty(key)&& data[key]!==null){
alert("property "+key+ " is " + data[key] );
}
}
}