使用Java脚本/jQuery解析json中的嵌套数组对象

Parsing nested array objects in json using Java script/jQuery

本文关键字:嵌套 数组 对象 json 解析 Java 脚本 jQuery 使用      更新时间:2023-09-26

我有一个JSON文件,如下所示:

{[
    {"name":"avc"},
    {"name":"Anna"},
    {"name":"Peter"},
    {"Folder":[
           {"name":"John"},
           {"name":"Anna"},
   {"Folder":[ 
          {"name":"gg"},
          {"name":"hh"}
        ]
    }
  ]
 }
]

}

它可以嵌套到任意数量的级别。我想遍历这个文件任意数量的级别。如何使用Javascript/JQuery 实现这一点

感谢

您可以使用Array#forEach进行迭代,如果Folder是一个数组,那么也可以进行迭代。

var a = [{ "name": "avc" }, { "name": "Anna" }, { "name": "Peter" }, { "Folder": [{ "name": "John" }, { "name": "Anna" }, { "Folder": [{ "name": "gg" }, { "name": "hh" }] }] }];
a.forEach(function iter(a) {
    if (Array.isArray(a.Folder)) {
        a.Folder.forEach(iter);
        return;
    }
    console.log(a.name);
});

我读到你的问题是这样的:

如何迭代对象数组,其中对象可能具有它自己的孩子。每个孩子都可能有孩子等等…

一种方法是编写递归函数,这是一个调用自己的函数。这里有一个递归函数,它将把每个帖子都记录到控制台中。请注意,我已经将您的模型更改为一个合适的对象。此外,我已将名称添加到文件夹中,但若不需要,可以删除该名称。

var a = [
    {name:"avc"},
    {name:"Anna"},
    {name:"Peter"},
    {name:"Folder name1",
     folder:[
           {name:"John"},
           {name:"Anna"},
   {name: "Folder name2",
    folder:[ 
          {name:"James"},
          {name:"Clark"},
          {name: "Folder name3",
           folder:[
             {name:"Cecilia"},
             {name:"Clara"}
           ]},
          {name:"Stephen"}
        ]
    }
  ]
 }
];
function read(obj){
    for(var i = 0; i < obj.length; i++)
    {
        console.log(obj[i].name); // Or do what you need here...
        if(obj[i].folder)
        {
          // Recursive call
          read(obj[i].folder);
        }
    }
}
read(a);