初学者JavaScript,JSON索引问题:为什么我的(for…in)脚本失败了?

初学者JavaScript,JSON索引问题:为什么我的(for…in)脚本失败了?,javascript,json,for-loop,indexing,Javascript,Json,For Loop,Indexing,我不是一个经验丰富的Javascript程序员,甚至不太熟悉JSON。我的方法可能很幼稚。欢迎提出更好办法的建议 这是我的密码 <!DOCTYPE html> <html> <head> <script> database = { "name": "AdventureWorks2012 vs AdventureWorksModified", "children": [{ "

我不是一个经验丰富的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 vs AdventureWorksModified”,
“儿童”:[{
“姓名”:“人”,
“儿童”:[{
“姓名”:“地址”,
“儿童”:[{
“名称”:“地址ID”,
“属性”:{
“coltype”:“int”,
“错误”:空,
“彩色第纳尔”:1,
“colCharLength”:空
}
}]
},{
“姓名”:“地址”,
“儿童”:[{
“名称”:“地址ID”,
“属性”:{
“coltype”:“int”,
“错误”:空,
“彩色第纳尔”:1,
“colCharLength”:空
}
}]
}]
},{
“姓名”:“PersonDELETEmePLEASE”,
“儿童”:[{
“姓名”:“地址”,
“儿童”:[{
“名称”:“地址ID”,
“属性”:{
“coltype”:“int”,
“错误”:空,
“彩色第纳尔”:1,
“colCharLength”:空
}
}]
}]
}]
}
log(`name:${database.name}`);
console.log(“=SCHEMAS=”);
for(database.children中的变量i){
log(`name:${database.children[i].name}`);
log(“子项:(-TABLES-”);
for(database.children中的var j){
log(`name:${database.children[i].children[j].name}`);
log(“子项:(-COLUMNS-)”;
for(数据库中的var k.children[i].children[j].children){
log(`name:${database.children[i].children[j].children[k].name}`);
console.log(“子项:(-DATA-”);
对于(数据库中的var l.children[i].children[j].children[k].attributes){
log(`${l}:${database.children[i].children[j].children[k].attributes[l]}`);
}
}
}
console.log(“\n\n\n”);
}
结构是数据库->架构->表->列+列数据

AdventureWorks2012 vs AdventureWorksModified->Person->Address->AddressID+属性

正如标题中提到的,我正在尝试遍历一些JSON数据。无论是输出到HTML还是控制台,我都会在一个奇怪的条件下遇到一个错误:每当一个模式只有一个表时。它可以有一个子项或一个数据成员,但必须有多个表

这是我得到的错误:

请帮助我理解:我的循环中是什么导致了这种情况的发生?在我开始寻找解决办法并最终将自己引入沟渠之前,我想问一下


谢谢你的帮助。

你的两个循环在同一个东西上循环

for (var i in database.children) { <-- same
  for (var j in database.children) <-- same

for(database.children中的vari){

for (var i in database.children) { <-- same
  for (var j in database.children) <-- same

for(vari in database.children){在您的第二个for循环中(
for(varj in database.children)
),我认为它应该读为
for(varj in database.children[i].children)
FYI:JSON是用于数据交换的文本符号。如果您处理的是JavaScript源代码,而不是字符串,那么您就不是在处理JSON。您所拥有的只是一个对象。这不是JSON,而是一个JavaScript对象文本。JSON始终是一个字符串。好的,感谢您的澄清。我会记住这些。在yo中第二个for循环(
for(varj在database.children中)
)我认为应该读为
for(varj在database.children[i].children中)
FYI:JSON是用于数据交换的文本符号。如果您处理的是JavaScript源代码,而不是字符串,那么您就不是在处理JSON。您所拥有的只是一个对象。这不是JSON,而是一个JavaScript对象文字。JSON始终是一个字符串。好的,谢谢您的澄清。我会记住这些。哦,哇w、 我是一块浓密的燕麦饼干。非常感谢你,好先生。哦,哇,我是一块浓密的燕麦饼干。非常感谢,好先生。