Wie verarbeitet man eigentlich JSON-Daten in Python? Diesem Thema widmen wir uns in diesem Beitrag.
Mithilfe der JavaScript Object Notation (JSON) lassen sich strukturierte Daten sehr kompakt austauschen. Dabei lassen sich die Daten mithilfe von Arrays auch verschachteln. Ein weiterer Vorteil von JSON zum Beispiel gegenüber XML ist, dass JSON einfacher menschenlesbar ist. Beim Einlesen von großen Datenmengen für das maschinelle Lernen spielt JSON eine wichtige Rolle. Hier wollen wir dieses beliebte Austauschformat mit Python verarbeiten.
In Python
Es gibt mehrere Pakete, die Python um die Verarbeitung von JSON erweitern, wie beispielsweise metamagic.json oder simplejson. Es gibt aber zunächst keinen Grund eine zusätzliche Bibliothek zu installieren, denn Python bringt die ganz eingängig json genannte Bibliothek mit, die du mit
import json
einfach laden kannst.
Beispiel-JSON
So sieht unser String aus, den wir als JSON verarbeiten wollen:
{
"Fahrzeug": {
"PKW": {
"Raeder": 4,
"Treibstoff": "Benzin",
"Baujahr": 2016,
"Angemeldet": true,
"Fahrer": ["Hagen", "Siegfried", "Gudrun"]
},
"LKW": {
"Raeder": 6,
"Treibstoff": "Diesel",
"Baujahr": 2014,
"Angemeldet": true ,
"Fahrer": ["Brunhilde", "Gudrun"]
}
}
}
Möchten wir prüfen, ob unser JSON valide ist und somit keine formalen Fehler aufweist, können wir das beispielsweise auf der Webseite jsonlint.com prüfen.
Du siehst, in JSON verwendest du Strings wie etwa „Fahrzeug“ oder „PKW“ als Schlüssel und Werte können Objekte, Arrays, Strings, aber auch Zahlen oder boolsche Werte sein.
Los geht’s
So sieht unsere Python-Datei mit dem JSON-Block aus.
import json
my_json_string = """{
"Fahrzeug": {
"PKW": {
"Raeder": 4,
"Treibstoff": "Benzin",
"Baujahr": 2016,
"Angemeldet": true,
"Fahrer": ["Hagen", "Siegfried", "Gudrun"]
},
"LKW": {
"Raeder": 6,
"Treibstoff": "Diesel",
"Baujahr": 2014,
"Angemeldet": true,
"Fahrer": ["Brunhilde", "Gudrun"]
}
}
}
"""
python_json_obj = json.loads(my_json_string)
print(python_json_obj["Fahrzeug"])
Zunächst importieren wir das JSON-Paket. Anschließend hinterlegen wir die String-Repräsentation unseres JSON-Objekt in einen Python-String. Diesen Python-String laden wir mit dem „loads()“-Befehl in ein JSON-Objekt. Zuletzt lassen wir uns mithilfe vom „print()“-Befehl ausgeben, was in
python_json_obj
enthalten ist.
Und wieder zurück
Auch der Weg zurück ist relativ einfach. Haben wir ein Python-Objekt und wollen dieses in ein JSON-Objekt konvertieren, können wir das durch den „dumps()“-Befehl erreichen.
Ein Python-Objekt
pkw = {"Raeder": 4, "Treibstoff": "Benzin", "Baujahr": 2016, "Angemeldet": True, "Fahrer": ["Hagen", "Siegfried", "Gudrun"]}
wird zu einem JSON-Objekt.
json_obj = json.dumps(pkw)
print(json_obj)
JSON-Dateien schreiben und lesen
Das Schreiben und Lesen von JSON-Dateien ist ähnlich einfach.
import json
my_json_string = """{
"Fahrzeug": {
"PKW": {
"Raeder": 4,
"Treibstoff": "Benzin",
"Baujahr": 2016,
"Angemeldet": true,
"Fahrer": ["Hagen", "Siegfried", "Gudrun"]
},
"LKW": {
"Raeder": 6,
"Treibstoff": "Diesel",
"Baujahr": 2014,
"Angemeldet": true,
"Fahrer": ["Brunhilde", "Gudrun"]
}
}
}
"""
with open('json_file.json', 'w') as file:
json.dump(my_json_string, file)
Wir legen mit „open“ eine Datei namens
json_file.json
an und kennzeichnen mit dem Zusatz „w“ die Datei zum Schreiben. Anschließend schreiben wir die Datei mit dem „dump()“-Befehl. Hier musst du aufpassen: Mit „dump()“ schreiben wir in eine Datei, mit „dumps()“ lesen wir in eine Variable ein, die Befehle sind sich sehr ähnlich.
Das Gleiche gilt fürs Einlesen aus einer Datei:
with open('test_file.json', 'r') as json_file:
json_data = json.load(json_file)
print(json_data)
Der Zusatz „r“ zeigt an, dass gelesen werden soll.