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