Ich habe zwei JSON-Objekte mit derselben Struktur und möchte sie mit Javascript zusammenfassen. Gibt es eine einfache Möglichkeit, dies zu tun?
Ich habe zwei JSON-Objekte mit derselben Struktur und möchte sie mit Javascript zusammenfassen. Gibt es eine einfache Möglichkeit, dies zu tun?
Antworten:
Basierend auf Ihrer Beschreibung in den Kommentaren würden Sie einfach ein Array-Concat erstellen:
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 arr3 = [].concat(arr1, arr2);
Wenn Sie die Eigenschaften lieber kopieren möchten:
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);
Die Ausgabe des obigen Codes ist{ value1: '1', value2: '4', value3: '3' }
Der eigentliche Weg ist die Verwendung von JS Object.assign.
Object.assign(target, ...sources)
Es gibt einen weiteren Operator für die Objektverteilung, der für ES7 vorgeschlagen wird und mit Babel-Plugins verwendet werden kann.
Obj = {...sourceObj1, ...sourceObj2}
Sie können die JQuery- Extend- Methode verwenden.
Beispiel:
o1 = {"foo":"bar", "data":{"id":"1"}};
o2 = {"x":"y"};
sum = $.extend(o1, o2);
Ergebnis:
sum = {"foo":"bar", "data":{"id":"1"}, "x":"y"}
Eine Lösung besteht darin, eine Liste / ein Array zu verwenden:
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);
Ergebnis
jsons = [
{"name":"joe", "age":27},
{"name":"james", "age":32}
]
[first_json, second_json]?
Sie können die Object.assign () -Methode verwenden. Die Object.assign () -Methode wird verwendet, um die Werte aller aufzählbaren eigenen Eigenschaften von einem oder mehreren Quellobjekten in ein Zielobjekt zu kopieren. Das Zielobjekt wird zurückgegeben. [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 }
Wenn Sie TypeScript verwenden, können Sie den Spread-Operator ( ...) verwenden.
var json = {...json1,...json2}
Okay, Sie können dies in einer Codezeile tun. Sie benötigen dafür json2.js (wahrscheinlich haben Sie bereits.). Die beiden JSON-Objekte hier sind nicht analysierte Zeichenfolgen.
json1 = '[{"foo":"bar"},{"bar":"foo"},{"name":"craig"}]';
json2 = '[{"foo":"baz"},{"bar":"fob"},{"name":"george"}]';
concattedjson = JSON.stringify(JSON.parse(json1).concat(JSON.parse(json2)));
Versuchen Sie dies einfach mit einem Unterstrich
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);
Ergebnis
var baseArrayOfJsonObjects = [{},{}];
for (var i=0; i<arrayOfJsonObjectsFromAjax.length; i++) {
baseArrayOfJsonObjects.push(arrayOfJsonObjectsFromAjax[i]);
}