Merge (Concat) Mehrere JSONObjects in Java
Ich bin nutzen einige JSON aus zwei verschiedenen Quellen, die ich am Ende mit zwei JSONObject
s und ich würde gerne, Sie zu kombinieren in einem.
Daten:
"Object1": {
"Stringkey":"StringVal",
"ArrayKey": [Data0, Data1]
}
"Object2": {
"Stringkey":"StringVal",
"Stringkey":"StringVal",
"Stringkey":"StringVal",
}
Code, mit http://json.org/java/ Bibliothek:
//jso1 and jso2 are some JSONObjects already instantiated
JSONObject Obj1 = (JSONObject) jso.get("Object1");
JSONObject Obj2 = (JSONObject) jso.get("Object2");
Also in diese situation würde ich gerne kombinieren Obj1
und Obj2
entweder um eine völlig neue JSONObject
oder concat einem zum anderen. Irgendwelche Ideen außer ziehen Sie alle auseinander und individuell hinzufügen von put
s?
- Verwandte: Zusammenführen von YAML
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie ein neues Objekt mit zwei Schlüsseln, Objekt1 und Objekt2, die Sie tun können:
Wenn Sie möchten, mischen Sie Sie, so z.B. einen top-level-Objekt verfügt über 5 Tasten (Stringkey1, ArrayKey, StringKey2, StringKey3, StringKey4), ich denke, man muss dies manuell tun:
Diesem wäre viel einfacher, wenn JSONObject umgesetzt Anzeigen, und unterstützt putAll.
JSONObject.names
.Können Sie erstellen ein neues JSONObject wie diese:
Mit diesem code, wenn Sie keine wiederholte Schlüssel zwischen
Obj1
undObj2
den Wert inObj2
bleiben. Wenn Sie wollen, dass die Werte inObj1
gehalten werden, Sie sollten umkehren der Reihenfolge der array in Zeile 2.new
vorJSONObject()
Bearbeiten ist nicht erlaubt für unter 6 Zeichen.In einigen Fällen müssen Sie ein tiefes verschmelzen, D. H., Zusammenführen der Inhalte von Feldern mit identischen Namen (genauso wie beim kopieren von Ordnern in Windows). Diese Funktion kann hilfreich sein:
Diese wrapper-Methode helfen :
Eine fertige Methode zum Zusammenführen einer beliebigen Anzahl von JSONObjects:
Dank Erel. Hier ist ein Gson-version.
Zusätzlich zu @erel Antwort, ich hatte um diese zu Bearbeiten (ich verwende
org.json.simple
) an den äußerenelse
für den Umgang mitJSONArray
's:Benutzte ich string zu verketten neues Objekt zu einem vorhandenen Objekt ist.
Für mich, dass Funktion gearbeitet:
(Hinweis) - diese Implementierung des concataion von json ist für den import
org.json.einfach.JSONObject;
Zusammenführen eingegebene Daten, die Struktur der Bäume ist nicht trivial, Sie müssen definieren den Vorrang, Griff inkompatible Typen, die definieren, wie werden Sie gegossen und zusammengeführt...
Also meiner Meinung nach wirst du nicht vermeiden
Wenn Ihre Frage ist: Hat jemand es für mich noch?
Dann denke ich, können Sie einen Blick auf diese YAML Zusammenführen-Bibliothek/- tool ich wiederbelebt. (YAML ist eine Obermenge von JSON), und die Grundsätze sind anwendbar auf sowohl.
(Jedoch, diesen bestimmten code gibt YAML-Objekte, nicht als JSON. Fühlen Sie sich frei, erweitern Sie das Projekt und senden eine PR.)
Heute war ich auch zu kämpfen, zu verschmelzen JSON-Objekte und kam mit folgender Lösung (mit Gson library).