我不是经验丰富的Javascript编码员,或者对JSON不太熟悉。我的方法很幼稚。欢迎提出更好的方法建议。
这是我的代码。
<!DOCTYPE html>
<html>
<head>
<script>
database = {
"name": "AdventureWorks2012 vs AdventureWorksModified",
"children": [{
"name": "Person",
"children": [{
"name": "Address",
"children": [{
"name": "AddressID",
"attributes": {
"coltype": "int",
"coldefault": null,
"colordinal": 1,
"colCharLength": null
}
}]
},{
"name": "Address",
"children": [{
"name": "AddressID",
"attributes": {
"coltype": "int",
"coldefault": null,
"colordinal": 1,
"colCharLength": null
}
}]
}]
},{
"name": "PersonDELETEmePLEASE",
"children": [{
"name": "Address",
"children": [{
"name": "AddressID",
"attributes": {
"coltype": "int",
"coldefault": null,
"colordinal": 1,
"colCharLength": null
}
}]
}]
}]
}
console.log(`name : ${database.name}`);
console.log("=SCHEMAS=");
for (var i in database.children){
console.log(`name : ${database.children[i].name}`);
console.log("children: (-TABLES-)");
for (var j in database.children){
console.log(`name : ${database.children[i].children[j].name}`);
console.log("children: (-COLUMNS-)");
for (var k in database.children[i].children[j].children){
console.log(`name : ${database.children[i].children[j].children[k].name}`);
console.log("children: (-DATA-)");
for (var l in database.children[i].children[j].children[k].attributes){
console.log(`${l} : ${database.children[i].children[j].children[k].attributes[l]}`);
}
}
}
console.log("\n\n\n");
}
</script>
</head>
<body>
</body>
</html>
结构是数据库->模式->表->列+列数据。
AdventureWorks2012与AdventureWorksModified->人员->地址->地址ID +属性。
如标题中所述,我正在尝试遍历一些JSON数据。无论是输出到HTML还是输出到控制台,我都会在一个奇怪的情况下遇到错误:每当一个模式只有一个表时。它可以有一个孩子,也可以有一个数据成员,但是必须有多个表。
这是我得到的错误:
请帮助我理解:循环中是什么导致这种情况发生?在开始寻找解决方法并最终导致自己陷入困境之前,我想问一下。
感谢您的帮助。
答案 0 :(得分:3)
您的两个循环在同一事物上循环
for (var i in database.children) { <-- same
for (var j in database.children) <-- same
您忘记引用嵌套了
for (var i in database.children) { <-- first level
for (var j in database.children[i].children) <-- second level
console.log(database.children[i].children[j])