fbpx

JSON lesen und schreiben mit Python

Inhalt
    Add a header to begin generating the table of contents

    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.

    FunktionBeschreibung
    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.
    WebScraping Angebot

    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 Janßen

    Ingo Janßen

    Lerne nicht einfach programmieren. Löse Probleme und automatisiere Aufgaben!

    Das könnte dich auch interessieren

    Nach oben scrollen
    Newsletter Popup Form

    Keine Inhalte mehr verpassen?

    Melde dich direkt für den "Code-Kompass" an und erhalte nützliche Tipps und Informationen direkt in deinen Posteingang.