简体   繁体   English

更改和/或合并两个 JSON 对象结构

[英]Changing and/or merging two JSON Objects structures

Lets say we are given a following JSON:假设我们得到了以下 JSON:

{
    "a": {
        "title": {
            "text": "text a"
        }
    },
    "b": {
        "title": {
            "text": "text b"
        }
    }
}

How could I convert and/or merge this into the following structure:我如何将其转换和/或合并到以下结构中:

{
    "title": {
        "text": {
            "a": "text a",
            "b": "text b"
        }
    }
}

or a different example:或不同的例子:

let aObject = {
    "level1": {
        "level2": {
            "level3": "text a"
        }
    }
}
let bObject = {
    "level1": {
        "level2": {
            "level3": "text b"
        }
    }
}
let cObject = {
    "level1": {
        "level2": {
            "level3": "text c"
        }
    }
}

into进入

{
    "level1": {
        "level2": {
            "level3": {
                "aObject": "text a",
                "bObject": "text b",
                "cObject": "text c"
            }
        }
    }
}

It might be very easy as I am missing a keyword describing this feature, or it might be complicated to archive this.这可能很容易,因为我缺少描述此功能的关键字,或者归档它可能很复杂。 Any help is appreciated.任何帮助表示赞赏。

Working example, looking for simpler solution:工作示例,寻找更简单的解决方案:

 let object = { "a": { "title": { "text": "text a" } }, "b": { "title": { "text": "text b" } } } function reduce(node, object, result = {}) { for (let key in object) { if (typeof result[key] === 'undefined') { result[key] = {} } if (typeof object[key] === 'string') { result[key][node] = object[key] } else { reduce(node, object[key], result[key]) } } return result } let result = Object.entries(object).reduce((result, [key, value]) => { return reduce(key, value, result) }, {}) console.log(result)

Can do in this way.:)可以这样做。:)

 let obj = { a: { title: { text: "text a" } }, b: { title: { text: "text b" } } }; let test = {}; test["title"] = {}; test.title["text"] = {}; Object.keys(obj).forEach((key) => { test.title.text[key] = `text ${key}`; }); console.log(test);

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

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