112 Stimmen

Zwei JSON-Objekte verketten

Ich habe zwei JSON-Objekte mit der gleichen Struktur und ich möchte sie mit Javascript zusammenfügen. Gibt es eine einfache Möglichkeit, dies zu tun?

0 Stimmen

Wie genau wollen Sie sie zusammenfügen? Jedes Element der beiden Objekte oder beide Objekte als neues Objekt mit den Ursprungsobjekten als Elementen oder ?

2 Stimmen

Grundsätzlich habe ich ein Array von 10 Json-Objekte. Ich mache dann einen Ajax-Aufruf, um weitere 10 Json-Objekte zu erhalten und ich möchte sie zusammenfügen, um ein Array von 20 Objekten zu erstellen.

0 Stimmen

Haben Sie JSON Objekte (deserialisiert in eine Variable vom Typ Object) oder Zeichenketten (serialisierte Form)?

120voto

jacobangel Punkte 6688

Basierend auf Ihrer Beschreibung in den Kommentaren, würden Sie einfach ein Array concat tun:

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}];

6 Stimmen

Ihre Annahme über den Wert von jsonArray1 ist falsch. concat ändert das ursprüngliche Array nicht, es gibt ein neues Array zurück.

1 Stimmen

Sie müssten jsonArray1 = jsonArray1.concat(jsonArray2) verwenden;

0 Stimmen

Das hat mich wirklich gerettet. Danke @jacobangel

53voto

Raunaq Sachdev Punkte 418

Der eigentliche Weg ist die Verwendung von JS Object.assign.

Object.assign(target, ...sources)

MDN-Link

Es gibt einen weiteren Objektverteilungsoperator, der für ES7 vorgeschlagen wird und mit Babel-Plugins verwendet werden kann.

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

47voto

user53964 Punkte 461

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 lautet { value1: '1', value2: '4', value3: '3' }

2 Stimmen

Da es sich um Objekte handelt, müssen Sie es nicht zurückgeben, da Objekte als Referenz übergeben werden

0 Stimmen

Hatte eine interessante Ecke Fall, wo ich brauchte, um Eigenschaften aus zwei JSON-Objekte zusammenführen, dies funktionierte wie ein Charme. Danke.

41voto

Alvaro Punkte 541

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 aquí .

1 Stimmen

Danke, das war die schnelle Lösung, die ich gesucht habe!

27voto

tnimas Punkte 401

Sie können jquery verwenden erweitern. Methode.

Exemple :

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

Ergebnis:

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

0 Stimmen

Bessere Lösung

1 Stimmen

Einfachere und sauberere Lösung.

2 Stimmen

Ein Fall, in dem jQuery ist nicht Overkill.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X