Ich habe zwei JSON-Objekte mit derselben Struktur und möchte sie mit Javascript zusammenfassen. Gibt es eine einfache Möglichkeit, dies zu tun?
javascript
json
Craig
quelle
quelle
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}];
quelle
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' }
quelle
Der eigentliche Weg ist die Verwendung von JS Object.assign.
Object.assign(target, ...sources)
MDN Link
Es gibt einen weiteren Operator für die Objektverteilung, der für ES7 vorgeschlagen wird und mit Babel-Plugins verwendet werden kann.
quelle
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"}
quelle
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} ]
quelle
[first_json, second_json]
?Ich benutze:
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 }
Von hier aus .
quelle
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 }
quelle
Wenn Sie TypeScript verwenden, können Sie den Spread-Operator (
...
) verwenden.var json = {...json1,...json2}
quelle
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)));
quelle
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
quelle
var baseArrayOfJsonObjects = [{},{}]; for (var i=0; i<arrayOfJsonObjectsFromAjax.length; i++) { baseArrayOfJsonObjects.push(arrayOfJsonObjectsFromAjax[i]); }
quelle
Ich benutze:
let jsonFile = {}; let schemaJson = {}; schemaJson["properties"] = {}; schemaJson["properties"]["key"] = "value"; jsonFile.concat(schemaJson);
quelle