Concatenate two JSON objects

JavascriptJson

Javascript Problem Overview


I have two JSON objects with the same structure and I want to concat them together using Javascript. Is there an easy way to do this?

Javascript Solutions


Solution 1 - Javascript

Based on your description in the comments, you'd simply do an array 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}];

Solution 2 - Javascript

If you'd rather copy the properties:

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 = jsonConcat(output, json2);

Output of above code is{ value1: '1', value2: '4', value3: '3' }

Solution 3 - Javascript

The actual way is using JS Object.assign.

Object.assign(target, ...sources)

MDN Link

There is another object spread operator which is proposed for ES7 and can be used with Babel plugins.

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

Solution 4 - Javascript

I use:

let x = { a: 1, b: 2, c: 3 }

let y = {c: 4, d: 5, e: 6 }

let z = Object.assign(x, y)
     
console.log(z)

// OUTPUTS:
{ a:1, b:2, c:4, d:5, e:6 }

From here.

Solution 5 - Javascript

You can use jquery extend method.

Example:

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

Result:

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

Solution 6 - Javascript

One solution is to use a list/array:

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);

Result

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

Solution 7 - Javascript

if using TypeScript, you can use the spread operator (...)

var json = {...json1,...json2} 

Solution 8 - Javascript

You can use Object.assign() method. The Object.assign() method is used to copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.[1]

var o1 = { a: 1 }, o2 = { b: 2 }, o3 = { c: 3 };
    
var obj = Object.assign(o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }

Solution 9 - Javascript

okay, you can do this in one line of code. you'll need json2.js for this (you probably already have.). the two json objects here are unparsed strings.

json1 = '[{"foo":"bar"},{"bar":"foo"},{"name":"craig"}]';

json2 = '[{"foo":"baz"},{"bar":"fob"},{"name":"george"}]';

concattedjson = JSON.stringify(JSON.parse(json1).concat(JSON.parse(json2)));

Solution 10 - Javascript

Just try this, using underscore

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);

Result

Solution 11 - Javascript

var baseArrayOfJsonObjects = [{},{}];
for (var i=0; i<arrayOfJsonObjectsFromAjax.length; i++) {
    baseArrayOfJsonObjects.push(arrayOfJsonObjectsFromAjax[i]);
}

Solution 12 - Javascript

I use:

let jsonFile = {};    
let schemaJson = {};    
schemaJson["properties"] = {};    
schemaJson["properties"]["key"] = "value";
jsonFile.concat(schemaJson);

 

Solution 13 - Javascript

The simplest way :

const json1 = { value1: '1', value2: '2' };
const json2 = { value2: '4', value3: '3' };

const combinedData = {
  json1,
  json2
};

console.log(combinedData)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionCraigView Question on Stackoverflow
Solution 1 - JavascriptjacobangelView Answer on Stackoverflow
Solution 2 - Javascriptuser53964View Answer on Stackoverflow
Solution 3 - JavascriptRaunaq SachdevView Answer on Stackoverflow
Solution 4 - JavascriptAlvaroView Answer on Stackoverflow
Solution 5 - JavascripttnimasView Answer on Stackoverflow
Solution 6 - JavascriptSoviutView Answer on Stackoverflow
Solution 7 - JavascripttusharView Answer on Stackoverflow
Solution 8 - JavascriptJ.C. GrasView Answer on Stackoverflow
Solution 9 - JavascriptBretonView Answer on Stackoverflow
Solution 10 - JavascriptRejayi CSView Answer on Stackoverflow
Solution 11 - JavascriptLuca MatteisView Answer on Stackoverflow
Solution 12 - JavascriptAlvaroView Answer on Stackoverflow
Solution 13 - JavascriptThiagoView Answer on Stackoverflow