我有两个嵌套的json文件加载到我的NodeJS应用中,第二个只是第一个的较新版本-具有更多密钥。
{
"something": {
"first": "one",
"second": "two"
},
"somethingelse": {
"one": "first string",
"two": "second string"
}
}
{
"something": {
"first": "one",
"second": "two",
"third": "this one changed "
},
"somethingelse": {
"one": "first string and this one changed",
"two": "second string",
"three": "third string"
}
}
我希望能够合并这两个json对象,不仅可以更新第一个中显示的键,还可以添加第二个中不存在的所有键。 我如何实现这种最简单易懂的方式?
我已经尝试过此代码
function matchjson(json1, json2) {
var combined_json = {};
var i = 0
// Deep copy of json1 object literal
for (var key in json1) {
combined_json[key] = json1[key];
}
for (var key in json2) {
// console.log(key)
if (!json1.hasOwnProperty(key)) combined_json[key] = json2[key]
}
return combined_json;
}
它确实可以将两个文件合并在一起,但是它始终只对存在于此对象中的键起作用,我不知道如何修改它以使其添加甚至不存在的键。
这是我想从上面合并了这两个json对象之后得到的结果:
{
"something": {
"first": "one",
"second": "two",
"third": "this one changed "
},
"somethingelse": {
"one": "first string and this one changed",
"two": "second string",
"three": "third string"
}
}
答案 0 :(得分:2)
由于要使用第二个对象的键更新第一个对象,请使用散布:
const json1 = {"something": {"first": "one","second": "two",},"somethingelse": {"one": "first string","two": "second string",}};
const json2 = {"something": {"first": "one","second": "two","third": "this one changed "},"somethingelse": {"one": "first string and this one changed","two": "second string","three": "third string"}};
const json3 = { ...json1, ...json2 };
console.log(json3);