javascript - 如何在 Javascript 中从 JSON 检索叶子子节点?

标签 javascript

如果我有一个 json 对象,并且我真的不知道它有多复杂,我想按照以下示例重新构造它,我该如何用 Javascript 编写它?

假设我有一个 json 对象,如下所示:

{
    "a": 1,
    "b": {
            "c": 2,
            "d": {
                     "e": 3
                  }
         }
    "f": {
            "g": 4
         }
}

现在,我希望得到以下预期结果:

{
   "a": 1,
   "b.c": 2,
   "b.d.e": 3,
   "f.g": 4
}

最佳答案

如果您可以使用它们,有一个库可以完成这项工作:https://www.npmjs.com/package/flat

或者类似的东西:

let original = {
    "a": 1,
    "b": {
        "c": 2,
        "d": {
            "e": 3
        }
    },
    "f": {
        "g": 4
    }
}

function flattenObj(obj, parent = '', res = {}){
    for(let key in obj){
        let propName = parent ? parent + '.' + key : key;
        if(typeof obj[key] == 'object'){
            flattenObj(obj[key], propName, res);
        } else {
            res[propName] = obj[key];
        }
    }
    return res;
}

let response = flattenObj(original)

console.log(response)

关于javascript - 如何在 Javascript 中从 JSON 检索叶子子节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60486087/

相关文章:

javascript - 将按钮变成加载圆圈动画

javascript - 在 javascript 中绘制网格(例如生命游戏)

javascript - 从ajax POST方法获取数据后,在django中打开另一个窗口

javascript - 使用额外的 ng-model 检查所有复选框

javascript - Volusion 产品页面上的 Accordion

javascript - 当前音频正在播放时,所有其他音频都应该停止,以及如何在单击同一按钮时暂停

javascript - 使用窗口调整表格和文本的大小

javascript - 在对象的对象中访问值

javascript - 更简单的方法将 onTap 函数绑定(bind)到微信小程序中的按钮

javascript - 使用 jquery Ajax 删除 django 中的模型对象