如何从嵌套的json中提取键值对

时间:2019-07-18 18:20:46

标签: json flatten

我有这样的嵌套json对象

{
    "id": 1,
    "parentId": null,
    "name": "Product",
    "children": [
        {
            "id": 50,
            "parentId": 1,
            "name": "Bicycle",
            "children": [
                {
                    "id": 100,
                    "parentId": 50,
                    "name": "Tire"
                }
            ]
        }
    ]
}

奇怪的是,我已经弄清楚了如何从结果构建嵌套树,而不是如何反转它。

我曾经尝试使用lodash _.flatten and _.flattendeep,但是在那些日子里,我无法解决这个问题。此外,物体的深度可能未知。有什么想法吗 ?

我想要的结果是这样。

[
    {"id" : 1, "parentId" : null, "Product" },
    {"id" : 50, "parentId" : 1 , "Bicycle"},
    {"id" : 100, "parentId" : 50 , "Tire"}
]

1 个答案:

答案 0 :(得分:0)

这不是一个非常理想的解决方案,而只是一个想法,请注意:如果数据集很大,则可能会出现一些性能问题。

resultsArray = [];
function flatten(obj) {
    const { id, parentId, name, children} = obj;
    if(children && children.length) {
        children.map(child => flatten(child));
    }
    resultsArray.push({id, parentId, name});
}