使用 jQuery 合并两个包含数组的 JSON 对象
Merge two JSON objects containing arrays using jQuery
我正在尝试合并两个包含数组的 JSON 对象:
var data1 = '{"resourceType": "test", "entry": [{"foo": 123, "test":"foo"},{"foo": 456, "test":"abc"}]}';
var data2 = '{"resourceType": "test", "entry": [{"foo": 789, "test":"bar"},{"foo": 102, "test":"def"}]}';
var json1 = JSON.parse(data1);
var json2 = JSON.parse(data2);
var obj = $.extend({},json1,json2);
console.log(obj);
但是当 .concat
将创建一个包含这两个对象的数组时,我得到的内容被 data2
对象覆盖,而不是我正在寻找的是 entry
要组合的对象数组。
想要的结果应该是这样的:
{"resourceType": "test",
"entry": [
{"foo": 123, "test":"foo"},
{"foo": 456, "test":"abc"},
{"foo": 789, "test":"bar"},
{"foo": 102, "test":"def"}
]
}
有什么建议吗?
如果您查看 jquery extend 的文档,您会发现可以将 deep
作为第一个参数传递:
var obj = $.extend(true, {},json1,json2);
使用你的测试数据,因为对象中的键名相同,结果将只有第二组对象。
如果您想要其他结果,您需要更新您的问题以阐明所需的效果。
更新
如果你想合并条目,你可以这样做:
var entries = json1.entry.concat(json2.entry);
console.log(entries);
Merge two objects x and y deeply, returning a new merged object with the elements from both x and y.
我正在尝试合并两个包含数组的 JSON 对象:
var data1 = '{"resourceType": "test", "entry": [{"foo": 123, "test":"foo"},{"foo": 456, "test":"abc"}]}';
var data2 = '{"resourceType": "test", "entry": [{"foo": 789, "test":"bar"},{"foo": 102, "test":"def"}]}';
var json1 = JSON.parse(data1);
var json2 = JSON.parse(data2);
var obj = $.extend({},json1,json2);
console.log(obj);
但是当 .concat
将创建一个包含这两个对象的数组时,我得到的内容被 data2
对象覆盖,而不是我正在寻找的是 entry
要组合的对象数组。
想要的结果应该是这样的:
{"resourceType": "test",
"entry": [
{"foo": 123, "test":"foo"},
{"foo": 456, "test":"abc"},
{"foo": 789, "test":"bar"},
{"foo": 102, "test":"def"}
]
}
有什么建议吗?
如果您查看 jquery extend 的文档,您会发现可以将 deep
作为第一个参数传递:
var obj = $.extend(true, {},json1,json2);
使用你的测试数据,因为对象中的键名相同,结果将只有第二组对象。
如果您想要其他结果,您需要更新您的问题以阐明所需的效果。
更新
如果你想合并条目,你可以这样做:
var entries = json1.entry.concat(json2.entry);
console.log(entries);
Merge two objects x and y deeply, returning a new merged object with the elements from both x and y.