Concat JSON对象

我有两个具有相同结构的JSON对象,我想用Javascript连接它们。 有没有一个简单的方法来做到这一点?

根据你在评论中的描述,你只需要做一个数组concat:

var jsonArray1 = [{'name': "doug", 'id':5}, {'name': "dofug", 'id':23}]; var jsonArray2 = [{'name': "goud", 'id':1}, {'name': "doaaug", 'id':52}]; jsonArray1 = jsonArray1.concat(jsonArray2); // jsonArray1 = [{'name': "doug", 'id':5}, {'name': "dofug", 'id':23}, //{'name': "goud", 'id':1}, {'name': "doaaug", 'id':52}]; 

如果你想复制这些属性:

 var json1 = { value1: '1', value2: '2' }; var json2 = { value2: '4', value3: '3' }; function jsonConcat(o1, o2) { for (var key in o2) { o1[key] = o2[key]; } return o1; } var output = {}; output = jsonConcat(output, json1); output = jsonContat(output, json2); 

输出= {值1:'1',值2:'4',值3:'3'};

你可以使用jquery的扩展方法。

例:

 o1 = {"foo":"bar", "data":{"id":"1"}}; o2 = {"x":"y"}; sum = $.extend(o1, o2); 

结果:

 sum = {"foo":"bar", "data":{"id":"1"}, "x":"y"} 

一个解决scheme是使用一个列表/数组:

 var first_json = {"name":"joe", "age":27}; var second_json = {"name":"james", "age":32}; var jsons = new Array(); jsons.push(first_json); jsons.push(second_json); 

结果

 jsons = [ {"name":"joe", "age":27}, {"name":"james", "age":32} ] 

实际的方法是使用JS Object.assign。

 Object.assign(target, ...sources) 

MDN链接

还有另一个对象扩展运算符,它是为ES7提出的,可以与Babel插件一起使用。

  Obj = {...sourceObj1, ...sourceObj2} 

好的,你可以在一行代码中做到这一点。 你需要json2.js(你可能已经有了。)。 这里的两个json对象是未parsing的string。

 json1 = '[{"foo":"bar"},{"bar":"foo"},{"name":"craig"}]'; json2 = '[{"foo":"baz"},{"bar":"fob"},{"name":"george"}]'; concattedjson = JSON.stringify(JSON.parse(json1).concat(JSON.parse(json2))); 
 var baseArrayOfJsonObjects = [{},{}]; for (var i=0; i<arrayOfJsonObjectsFromAjax.length; i++) { baseArrayOfJsonObjects.push(arrayOfJsonObjectsFromAjax[i]); } 

试试这个,用下划线

 var json1 = [{ value1: '1', value2: '2' },{ value1: '3', value2: '4' }]; var json2 = [{ value3: 'a', value4: 'b' },{ value3: 'c', value4: 'd' }]; var resultArray = []; json1.forEach(function(obj, index){ resultArray.push(_.extend(obj, json2[index])); }); console.log("Result Array", resultArray); 

结果

只有Javascript =)

 var objA = { 'a': 1, 'b': 2} var objB = { 'x': 3, 'y': 5} objA.nameNewObj = objB 

在这里输入图像描述