Nachdem du jetzt in Dateien schreiben und aus ihnen lesen und auch kopieren, umbenennen und archivieren kannst, möchte ich dir jetzt JSON etwas näher bringen.
JSON (JavaScript Object Notation) ist ein mittlerweile weit verbreitetes und von vielen Anwendungen unterstütztes Format zum strukturierten Austausch von Daten.
Weit verbreitet und etabliert heißt natürlich, dass Python mit Sicherheit eine kleine Hilfe dafür in der Hinterhand hat. 😉
Und genau so ist es auch: Mit dem json Modul bekommst du alles an die Hand.
Mit json kannst du Python Datenstrukturen direkt in einen JSON-String umwandeln (Serialisierung).
Natürlich geht auch die andere Richtung (Deserialisierung), bei der du einen JSON-String wieder in Python Datenstrukturen zurückwandelst.
Zwischen den Vorgängen kann der String zum Beispiel in einer Datei zwischengespeichert, von einem anderen System übertragen, oder aus einer Datenbank geladen worden sein.
Funktion | Beschreibung |
---|---|
json.dumps(Python Datenstruktur) | Übergebene Datenstruktur in JSON umwandeln |
json.dump(Python Datenstruktur, Datei-Handle) | Übergebene Struktur in JSON umwandeln und in übergebenen Datei-Handle schreiben |
json.loads(String) | Übergebenen String im JSON Format in eine Python Datenstruktur umwandeln |
json.load(Datei-Handle) | JSON aus übergebenem Datei-Handle auslesen und in Python Datenstruktur umwandeln |
Du weißt nicht, was du mit den Dateien machen sollst?
Hier findest du Hilfe.
Und ein Video zum Artikel gibt es auch:
Umwandeln von Python Daten zu JSON String
Fangen wir einfach an.
Du möchtest zum Beispiel eine Liste oder ein Dictionary in einen String im JSON Format umwandeln.
Dafür kannst du aus dem json Modul einfach die Funktion dumps() benutzen und deinen Python Datentyp übergeben.
Heraus kommt dann ein JSON konformer String, der von anderen Systemen einfach gelesen und verstanden werden kann.
Du hast damit die Python Daten serialisiert.
string = json.dumps(<DATEN>)
import json
liste = [1, 'eins']
dictionary = {
'0': 'null',
'1': liste
}
liste_string = json.dumps(liste)
dictionary_string = json.dumps(dictionary)
print('Python Typ:', liste)
print('Json Typ:', liste_string)
print('Python Typ:', dictionary)
print('Json Typ:', dictionary_string)
Wie du in der Ausgabe sehen kannst, ist der Unterschied nicht groß. Und genau das gibt Python die Möglichkeit so einfach so konvertieren.
Umwandeln von Python Daten in JSON Datei
Teilweise musst du mit dem JSON gar nichts mehr machen. Also zum Beispiel kein Webservice, der auf die Daten wartet.
Stattdessen sollen die Daten in eine Datei geschrieben werden.
Vielleicht werden sie von einem anderen System abgeholt oder du willst sie manuell irgendwo hin verschicken.
Dafür gibt es die Funktion dump().
Mit dump() übergibst du auch wieder deine Python Datenstruktur. Dazu übergibst du noch einen erstellten Datei-Handle.
Der wird von dump() dann genutzt und direkt in die Datei reingeschrieben.
json.dump(<DATEN>, <DATEI-HANDLE>)
import json
liste = [1, 'eins']
dictionary = {
'0': 'null',
'1': liste
}
with open('Beispiel_Json.txt', 'w') as datei:
json.dump(dictionary, datei)
with open('Beispiel_Json.txt', 'r')as datei:
print(datei.read())
Umwandeln von JSON String zu Python Daten
Anders herum kannst du mit der Funktion loads() den JSON String wieder deserialisieren – also in Python Datentypen zurückwandeln.
datentyp = json.loads(<STRING>)
import json
string = '{"0": "null", "1": [1, "eins"]}'
dictionary = json.loads(string)
print(string)
print(dictionary)
Umwandeln von JSON Datei zu Python Daten
Genauso wird mit load() und dem Datei-Handle die Datei wieder ausgelesen und in Python Daten gewandelt. Und der Übergabe einer Datei der Inhalt der Datei wieder deserialisiert.
datentyp = json.load(<DATEI-HANDLE>)
import json
dictionary = {}
with open('Beispiel_Json.txt', 'r') as datei:
print(dictionary)
dictionary = json.load(datei)
print(dictionary)
Vielleicht als kleine Hilfe noch für dich…
Ich habe mir eine Eselsbrücke gebaut, mit der ich die vier Funktionen gut auseinander halten kann:
dump ist praktisch ein Abladeplatz es wird also etwas weggegeben.
dumps ist ein Abladeplatz mit s also String – es wird ein String abgegeben.
Genauso für load:
load ist laden – ich lade also etwas in mein Programm.
loads also laden mit s also ein String, der in mein Programm geladen wird.
Zusammenfassung
- JSON – JavaScript Object Notation ist ein bekanntes Format zur strukturierten Datenübermittlung.
- dump() und dumps() serialisieren eine Python Datenstruktur in einen String, bzw. in eine Datei.
- load() und loads() deserialisieren einen String, bzw. eine Datei in eine Python Datenstruktur.
Kurse
Code Challenges und YouTube Videos führen nicht immer zum gewünschten Erfolg.
Manchmal ist es besser, gezielt und strukturiert durch ein Thema zu arbeiten.
Schau dich einfach mal bei meinen Kursen um.
Ohne lästiges Blah Blah steigen wir direkt in das Thema ein und behandeln alles, was du brauchst.
Ingo Janssen ist ein Softwareentwickler mit über 10 Jahren Erfahrung in der Leitung seines eigenen Unternehmens.
Er studierte Wirtschaftsinformatik an der TH Deggendorf und hat Softwareentwicklung an der FOM Hochschule in München unterrichtet.
Ingo hat mit einer Vielzahl von Unternehmen zusammengearbeitet, von kleinen und mittelständischen Unternehmen bis hin zu MDAX- und DAX-gelisteten Unternehmen.
Ingo ist leidenschaftlich daran interessiert, sein Wissen und seine Expertise mit anderen zu teilen. Aus diesem Grund betreibt er einen YouTube-Kanal mit Programmier-Tutorials und eine Discord-Community, in der Entwickler miteinander in Kontakt treten und voneinander lernen können.
Sie können Ingo auch auf LinkedIn, Xing und Gulp finden, wo er Updates über seine Arbeit teilt und Einblicke in die Tech-Branche gibt.
YouTube | Discord | LinkedIn | Xing | Gulp Profile