Das JSON-Format steht für JavaScript Object Notation, dieses Datenformat ist leicht Lesebar und kann Objekte Repräsentieren. JSON eignet sich vor allem als Datenaustauschformat, ähnlich wie XML. Der Name enthält zwar JavaScript, aber das heißt nicht, dass die Nutzung von JSON auf JavaScript beschränkt. Inzwischen unterstützt jede Moderne Programmiersprache das JSON Format. Deshalb möchte ich Euch den Umgang mit JSON in Python-Skripten zeigen.
Die Standartisierung von JSON ist in ECMA 404 zu finden. Dort ist bis ins Detail beschrieben wie mit JSON zu arbeiten ist und wie die korrekte Syntax aussieht. https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
Da es einen Parser für JSON in allen gänigen Programmiersprachen gibt, oft sogar auch verschieden für eine Programmiersprache ist JSON ein hervoragendes Datenaustauschformat für mehrer Programmiersprachen.
Python verfügt über ein Integriertes Modul in der Python Standard Library. Das Modul heißt einfach nur "json".
JSON verfügt, wie Python, über mehrere Datentypen. Somit ist eine Zuweisung gleicher Datentypen möglich.
JSON-Datentyp | Syntax | Python-Datentyp |
---|---|---|
Object | {} | dict |
Array | [] | list |
String | "" | str |
Number | 10 10.5 | int float |
Value | true false | bool |
Value | null | NoneType |
Object und Array können wie gewohnt weitere Kindelemente wie Strings, Objects und alle andere Datentypen enthalten. So können riesiege Strukturen von struktirerten Daten erstellt werden.
Um das JSON Modul zu Importieren. benötigen wir den folgenden Befehl. Dieser ist immer notwendig, wenn mit JSON gearbeitet wird. Ich werde daher darauf verzichten, ihn in den weiteren Beispielen extra zu erwähnen.
import json
Diesen Befehl an den Anfang eurer Datei schreiben, in der Ihr JSON verwenden wollt. Ihr könnt also direkt loslegen und in Python mit JSON Formaten arbeiten.
Um in Python ein JSON String einzulesen benötigen wir die json.loads() Methode. Damit können wir JSON-Strings in Python einlesen und auf die Daten im Dictionary, welches aus dem JSON String erstellt wird, zugreifen.
jsonString = '{"test": "testValue","test2": "content"}'
obj = json.loads(jsonString)
print(obj["test2"])
Sobald du nun den JSON String in eine Dictionary geparset hast, kannst du auf alle Werte zugreifen.
Python hat eine zusätzliche Möglichkeit um Daten direkt aus einer JSON-Datei auszulesen. Dazu benötigts du die Methode json.load() . Damit kann JSON direkt aus dem Filestream laden, ohne dass der Content vorher ausgelesen werden muss. In diesem Falle ist die Variable "obj" nun unser Python Dictionary.
with open('test.json','r') as file:
obj = json.load(file)
Natürlich kannst du auch Daten wieder in einen JSON-String umwandeln. Zum Beispiel kannst du ein Python Dict in ein JSON Objekt umwandeln.
Folgede Daten werden folgendermaßen formatiert:
JSON | Python |
---|---|
object | dict |
array | list |
String | str |
number (int) (real) | int float |
true | True |
false | False |
null | None |
Unser Dict fürs Json könnte zum Beispiel den Folgenden Inhalt haben:
article = {
'title': 'Hello World, deine erste Zeile Code!',
'author': 'Felix Schürmeyer'
}
Dieses Python Dictionary können wir nun in einen JSON-String umwandeln. Mit der Methode json.dumps kannst du das ganze nun in ein JSON-String umwandeln.
json.dumps(article)
# '{"title": "Hello World, deine erste Zeile Code!", "author": "Felix Sch\\u00fcrmeyer"}'
Als Ergebnisse erhalten wir nun einen JSON-String.
Mit der Methode json.dump, ohne das "S" am Ende, kannst du die Daten direkt in einen Filestream schreiben, diesen musst du natürlich erst öffnen. Wichtig ist, dass es sich bei der open() Methode um eine "writeable Filestream" handelt. Wir wollen wieder unseren Artikel in eine JSON-Datei schreiben.
json.dump(article,open('article-save.json','w'))
Und nun haben wir unsere Datei "article-save.json" und könnnen mit dieser weiter arbeiten.
Um ein Dictionary in eine Datei zu schreiben und dabei das JSON in eine "Schöne" Form zu bringen benötigen wir zwei Argumente "Indent" und "sort_keys".
json.dump(article,open('article-save.json','w'),indent=4,sort_keys=True)
ident → Mit Ident kannst du definieren wie viel pro Ebene eingerückt werden soll. Alternativ, kannst du auch für Sonderfälle einen String mit einem Special Character angeben. Ein Indent von 4 gehört für mich zum guten Ton.
sort_keys → Der Output wird nach den Keys sortiert, wenn du diesen Wert auf "true" stellst.
Python und JSON lassen sich wunderbar vereinen - du kannst sturkturierte Daten lesen und schreiben, mit vergleichsweise einfachen Methoden. JSON lässt sich für Mensch und Maschine gut lesen, aus diesem Grund nutze ich gerne JSON.
Hinterlasse mir gerne einen Kommentar zum Artikel und wie er dir weitergeholfen hat beziehungsweise, was dir helfen würde das Thema besser zu verstehen. Oder hast du einen Fehler entdeckt, den ich korrigieren sollte? Schreibe mir auch dazu gerne ein Feedback!
Es sind noch keine Kommentare vorhanden? Sei der/die Erste und verfasse einen Kommentar zum Artikel "JSON in Python korrekt verwenden!"!