JSON-Daten in Python verarbeiten

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.