Объединить два объекта JSON - PullRequest
64 голосов
/ 11 января 2009

У меня есть два объекта JSON с одинаковой структурой, и я хочу объединить их вместе, используя Javascript. Есть ли простой способ сделать это?

Ответы [ 12 ]

83 голосов
/ 12 января 2009

Исходя из вашего описания в комментариях, вы просто сделаете конкатат массива:

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}];
34 голосов
/ 11 января 2009

Если вы хотите скопировать свойства:

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

Вывод вышеуказанного кода { value1: '1', value2: '4', value3: '3' }

21 голосов
/ 24 марта 2015

Вы можете использовать метод jquery extension .

Пример:

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

Результат:

sum = {"foo":"bar", "data":{"id":"1"}, "x":"y"}
16 голосов
/ 24 июня 2017

Фактический способ - использование JS Object.assign.

Object.assign(target, ...sources)

MDN Link

Существует еще один оператор распространения объектов, который предлагается для ES7 и может использоваться с плагинами Babel.

 Obj = {...sourceObj1, ...sourceObj2}
14 голосов
/ 11 января 2009

Одним из решений является использование списка / массива:

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}
]
3 голосов
/ 03 июля 2018

Вы можете использовать Object.assign () метод. Метод Object.assign () используется для копирования значений всех перечисляемых собственных свойств из одного или нескольких исходных объектов в целевой объект. Он вернет целевой объект. [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 }
2 голосов
/ 11 сентября 2018

Я использую

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

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

let z = Object.assign (x, y)

console.log (г)

// ВЫХОДЫ:

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

https://www.quora.com/How-can-I-add-two-JSON-objects-into-one-object-JavaScript

1 голос
/ 08 декабря 2015

Просто попробуйте это, используя подчеркивание

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

Результат

1 голос
/ 12 января 2009

хорошо, вы можете сделать это в одной строке кода. для этого вам понадобится json2.js (возможно, у вас уже есть). здесь два объекта json - это неразобранные строки.

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

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

concattedjson = JSON.stringify(JSON.parse(json1).concat(JSON.parse(json2)));
0 голосов
/ 11 ноября 2018

Я использую:

let jsonFile = {};    
let schemaJson = {};    
schemaJson["properties"] = {};    
schemaJson["properties"]["key"] = "value";
jsonFile.concat(schemaJson);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...