繁体   English   中英

JSON中的JavaScript对象数组

[英]Array of JavaScript objects from JSON

我有一个深层嵌套的JSON结构,如下所示:

[
    {
    "ATA": "49",
    "Description": "APU",
    "MSI": "",
    "Level":"1",
    "ChildNodes": {
        "Nodes": [
            {
                "ATA": "49-10",
                "Description": "Power Plant",
                "MSI": "",
                "Level":"2",
                "ChildNodes": {
                    "Nodes": [
                        {
                            "ATA": "49-13",
                            "Description": "APU Mounts",
                            "MSI": "Yes",
                            "Level":"3",
                            "ChildNodes": {
                                "Nodes": [
                                    {
                                        "ATA": "49-13-01",
                                        "Description": "APU Gearbox Mount Bracket",
                                        "MSI": "Yes",
                                        "Level":"4"
                                    }]
                            }
                        }
                    ]
                }
            }
        ]
    }        
}

]

我正在尝试将以下内容转换为表单数组,以便更轻松地处理以表格格式显示的数据:

[{ATA:"49",Description:"APU",MSI:""},{ATA:"49-10",Description:"PowerPlant",MSI:""}]...

我已经尝试了很多方法,尽管我可以获得所有键/值对,但是我不知道该怎么做。 我无法更改JSON,因为所有子节点都具有依赖项。 有任何想法吗?

编辑:我尝试以下解决方案来获取所有键/值对: 使用JavaScript遍历JSON对象树的所有节点,但是我找不到何时启动新对象。

您应该为此使用递归函数:

function processNodes(nodes, output){
    for (var i = 0, l = nodes.length; i < l; ++i){
        output.push({
            "ATA": nodes[i]["ATA"],
            "Description": nodes[i]["Description"],
            "MSI": nodes[i]["MSI"]
        });
        if (nodes[i]["ChildNodes"]){
            processNodes(nodes[i]["ChildNodes"]["Nodes"], output);
        }
    }
}

然后:

var json = JSON.parse( ... );
var output = [];
processNodes(json, output);
console.log(output);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM