Python: Fügen Sie JSON in Bestehende JSON

Angenommen ich habe zwei json-Dateien. Ich würde gerne in der Lage, laden Sie beide, fügen Sie dann die Einträge von der zweiten in die erste. Dies kann auch das hinzufügen von Feldern oder Listen-Einträge. So etwas wie im folgenden Beispiel:

Datei1.json: { "Obst": [ { "name": "apple", "color": "red" }, { "name": "orange", "Farbe": "orange" } ] }

Datei2.json: { "Obst": [ { "name": "Erdbeere", "color": "red", "size": "small" }, { "name": "orange", "size": "medium" } ] }

Ergebnis: { "Obst": [ { "name": "apple", "color": "red" }, { "name": "orange", "Farbe": "orange", "size": "medium" }, { "name": "Erdbeere", "color": "red", "size": "small" } ] }

Zuerst dachte ich, laden Sie Sie in Wörterbüchern und versuchen so etwas wie update:

import simplejson

filea = open("file1.json", 'r')
dicta = simplejson.loads(filea.read())

fileb = open("file2.json", 'r')
dictb = simplejson.loads(fileb.read())

filea.close()
fileb.close()

dicta.update(dictb)

Da beide Wörterbücher haben einen Eintrag für "Obst" ich hatte gehofft, Sie würden verschmelzen, aber es einfach überschreibt den Eintrag in der dicta mit der Eintragung in dictb.

Ich merke, ich könnte schreiben Sie code, um eine Schleife durch dieses Beispiel, aber die eigentlichen Dateien, die ich verwende, sind weit größer und komplizierter. Ich Frage mich, ob es eine Bibliothek gibt, die so etwas Tat schon gehen, bevor ich das Rad neu erfinden. Für was es Wert ist, ich bin mit Python 2.6.2.

Vielen Dank für jede Beratung oder Anregungen!

So dass Sie wollen, zu verbinden die Elemente der fruit auf Ihre name Wert? Sie haben Kontrolle über das json-format? Und was sind die Regeln, wenn Datei1 und Datei2 haben widersprüchliche Daten in anderen Bereichen (ex haben beide eine color für apple)?
In diesem speziellen Beispiel, ich würde gerne mitmachen, basierend auf den name-Wert, ja. Im realen Leben gäbe es zwei spezifische Felder, die musste passen, statt nur dem einen, aber das Konzept ist ähnlich. Ich habe die volle Kontrolle über das format der zweiten Datei und keine überhaupt über die erste Datei. Es sollte nie zu Konflikten kommen, so dass das Verhalten in diesem Fall werden könnte, was einfacher ist (z.B. überschreiben mit der neuen oder der alten)
Welche version von Python?
Gute Frage, tut mir Leid ich vernachlässigte zu erwähnen, dass früher. Ich bin mit Python 2.6.2, und ich habe Hinzugefügt, dass zu dem original-Beitrag.

InformationsquelleAutor Matthew Pape | 2012-09-05

Schreibe einen Kommentar