JSON in eine Datei schreiben in Python
JSON ist ein leichtes und für Menschen lesbares Dateiformat, das in der Branche häufig verwendet wird. JSON steht für JavaScript Object Notation
. Wie der Name schon sagt, ist JSON bei Webentwicklern sehr beliebt und wird häufig in Webanwendungen zum Senden und Abrufen von Daten vom Server oder anderen Anwendungen verwendet.
Python wird mit vielen integrierten Paketen oder Modulen geliefert und verfügt über viele externe Module, die über das Internet zur Verfügung stehen. Interessanterweise verfügt es auch über ein eingebautes Modul, json
, um JSON-Daten zu verarbeiten.
In Python kann der JSON auf zwei Arten dargestellt werden. Erstens als Zeichenketten. Eine JSON-Zeichenkette sieht folgendermaßen aus.
jsonString = '{ "name": "DelftStack", "email": "DelftStack@domain.com", "age": 20, "country": "Netherlands", "city": "Delft"}'
Stellen Sie bei der Darstellung von JSON als Zeichenkette sicher, dass Sie nur doppelte Anführungszeichen (""
) verwenden, um Schlüssel und Zeichenkettenwerte zu verpacken. JSON unterstützt das einfache Anführungszeichen nicht und gibt einen Fehler aus, wenn das einfache Anführungszeichen verwendet wird.
Der zweite Weg ist die Verwendung des Python-Objekts oder im Volksmund als Python-Dictionary bekannt. Es hat eine ähnliche Syntax wie ein JSON.
Die Darstellung des JSON in Form eines Python-Dictionaries würde so aussehen.
jsonObject = {
"name": "DelftStack",
"email": "DelftStack@domain.com",
"age": 20,
"country": "Netherlands",
"city": "Delft",
}
Stellen Sie erneut sicher, dass Sie nur doppelte Anführungszeichen verwenden.
Schreiben Sie JSON mit dem Modul json
in Python in eine Datei
Angenommen, Sie haben eine Variable, die einen JSON in Form einer Zeichenkette speichert. Um es in eine JSON-Datei zu schreiben, können Sie den folgenden Code verwenden.
import json
fileName = "my-data.json"
jsonString = '{ "name": "DelftStack", "email": "DelftStack@domain.com", "age": 20, "country": "Netherlands", "city": "Delft"}'
jsonString = json.loads(jsonString)
file = open(fileName, "w")
json.dump(jsonString, file)
file.close()
Zunächst haben wir das Modul json
importiert. Dann haben wir den JSON-Dateinamen und die JSON-Zeichenkette selbst in zwei Variablen gespeichert. Dann erstellen und öffnen wir eine neue Datei mit dem Namen, den wir im Schreibmodus gewählt haben.
Anschließend verwenden wir die Funktion loads
aus dem Modul json
, um die JSON-Zeichenkette in ein Python-Dictionary zu konvertieren und in eine Datei zu schreiben. Die Funktion akzeptiert eine gültige JSON-Zeichenkette und konvertiert sie in ein Python-Dictionary.
Wenn für diese Funktion eine ungültige Zeichenkette angegeben wird, wird der Fehler
json.decoder.JSONDecodeError
ausgegeben. Stellen Sie also sicher, dass Sie eine korrekte Zeichenkette übergeben, oder verwenden Sie zur Fehlerbehandlung einen Blocktry-except-finally
.
Als nächstes verwenden wir die Methode dump()
, die uns das Modul json
zur Verfügung stellt. Diese Methode akzeptiert ein Python-Dictionary und einen Dateideskriptor als Parameter und schreibt die Daten des Dictionaries in die Datei.
Die Methode dump()
funktioniert genau dann, wenn die Datei nicht in einem Binärformat geöffnet ist, dh "wb"
und "rb"
funktionieren nicht und führen zu einem TypeError
.
Zuletzt schließen wir die Datei und das Programm wird beendet. Eine JSON-Datei mit dem Namen, den Sie im Programm definiert haben, wird im aktuellen Verzeichnis erstellt.
Wenn im Arbeitsverzeichnis eine Datei mit demselben Namen und derselben Erweiterung vorhanden ist, wird der Inhalt dieser Datei überschrieben.
Angenommen, Sie möchten ein Python-Objekt oder ein Python-Dictionary in eine JSON-Datei schreiben. In diesem Fall beziehen Sie sich auf das folgende Code-Snippet.
import json
fileName = "my-data.json"
jsonObject = {
"name": "DelftStack",
"email": "DelftStack@domain.com",
"age": 20,
"country": "Netherlands",
"city": "Delft",
}
file = open(fileName, "w")
json.dump(jsonObject, file)
file.close()
In diesem Fall haben wir bereits das Python-Objekt oder Dictionary, und das dump()
akzeptiert, wie oben erläutert, ein Dictionary als Parameter und schreibt es in den Dateideskriptor. Also öffnen wir eine Datei im Schreibmodus, schreiben die Daten mit der Methode dump()
in die Datei und schließen die Datei.