簡體   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