使用 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要组合的对象数组。

JSFiddle

想要的结果应该是这样的:

{"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.

https://www.npmjs.com/package/deepmerge

http://jsfiddle.net/d38L6uhs