So analysieren Sie JSON in Python

JSON hat sich als ein weitverbreitetes Format für den Datenaustausch etabliert. Python bietet ein integriertes JSON-Modul, welches die Analyse und Bearbeitung von JSON-Daten ermöglicht. In diesem Tutorial werden wir uns eingehend mit der Verwendung von JSON in Python beschäftigen.

Nach Abschluss dieses Tutorials werden Sie Folgendes beherrschen:

  • Die grundlegenden Konzepte von JSON.
  • Das Parsen und Erstellen von JSON-Strings in Python.
  • Das Lesen und Schreiben von JSON-Dateien mit Python.

Legen wir los! ⏳

Was ist JSON?

JSON, oder JavaScript Object Notation, ist ein textbasiertes Format, das für den Datenaustausch verwendet wird. Obwohl es ursprünglich von JavaScript-Objekten inspiriert wurde, unterstützen heute nahezu alle Programmiersprachen das Arbeiten mit JSON.

Wenn Sie jemals mit APIs gearbeitet oder Konfigurationsdateien geprüft haben, sind Sie höchstwahrscheinlich schon mit JSON in Berührung gekommen.

📑 Bei der Abfrage von APIs werden Daten in JSON-Form gesendet und empfangen. JSON wird auch häufig in der Client-Server-Kommunikation innerhalb von Softwareanwendungen eingesetzt. Darüber hinaus kann JSON zur allgemeinen Datenspeicherung genutzt werden.

Das Format von JSON ähnelt stark dem eines Python-Wörterbuchs. Wörterbücher sind leistungsstarke, in Python integrierte Datenstrukturen, die Daten als Schlüssel-Wert-Paare speichern.

Bevor wir fortfahren, hier einige wichtige Punkte:

  • In Python wird ein JSON-Objekt als Wörterbuch gespeichert.
  • Ein Array in JSON wird als Python-Liste repräsentiert.
  • Boolesche Werte werden in JSON als wahr und falsch dargestellt, während sie in Python in True und False umgewandelt werden.

Weitere Details zu den Datentypen, die von JSON in Python übersetzt werden, finden Sie hier in der offiziellen Dokumentation.

Da das Modul json zur Standardbibliothek von Python gehört, ist keine zusätzliche Installation erforderlich. Sie können es mit dem folgenden Befehl in Ihr aktuelles Verzeichnis importieren:

import json

So laden Sie einen JSON-String in Python

Die allgemeine Syntax zum Laden eines JSON-Strings in Python sieht wie folgt aus:

<dict_obj> = json.loads(<json_str>)

Hierbei ist:

  • <dict_obj> das Python-Wörterbuch, in das der JSON-String geladen werden soll.
  • <json_str> ein beliebiger gültiger JSON-String.

Dieser Befehl konvertiert <json_str> in ein Python-Wörterbuch und speichert es in <dict_obj>.

Betrachten wir ein praktisches Beispiel. Angenommen, json_str ist folgender JSON-String:

json_str=""'
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''

Das nachstehende Codefragment demonstriert, wie Sie den JSON-String json_str mit der loads()-Methode in ein Python-Wörterbuch laden können. Mit der integrierten Funktion type() lässt sich überprüfen, ob py_dict tatsächlich ein Python-Wörterbuch ist.

py_dict = json.loads(json_str)

type(py_dict)

# Ausgabe: dict

print(py_dict)

# Ausgabe
{'books': [{'title': 'The Wind in the Willows', 
'author': 'Kenneth Grahame', 'year': '1908'}, 
{'title': 'To the Lighthouse', 'author': 'Virginia Woolf', 'year': '1927'}]}

Wie im obigen Code zu sehen ist, werden alle Felder im JSON-String als Schlüssel-Wert-Paare in py_dict abgebildet.

So erstellen Sie JSON-Strings in Python

Angenommen, Sie haben ein Python-Wörterbuch. Wie kann man daraus einen JSON-String erstellen?

Dies gelingt mit der dumps()-Methode, die folgende Syntax aufweist:

<json_str> = json.dumps(<dict_obj>)

Hierbei ist:

  • <dict_obj> das Python-Wörterbuch, aus dem Sie den JSON-String generieren möchten.
  • <json_str> der resultierende JSON-String.

Die dumps()-Methode konvertiert also <dict_obj> in einen JSON-String <json_str>.

Fügen wir unserem existierenden Python-Wörterbuch py_dict einen neuen Schlüssel „Filme“ hinzu. Dies kann wie im folgenden Code-Snippet geschehen:

py_dict["movies"] = [{"title":"The Imitation Game","year":"2014",
"lang":"en","watched":True}]

Lassen Sie uns nun das veränderte Wörterbuch mit der dumps()-Methode in einen neuen JSON-String json_str2 ausgeben:

json_str2 = json.dumps(py_dict)

print(json_str2)

# Ausgabe
{"books": [{"title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908"}, 
{"title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927"}], 
"movies": [{"title": "The Imitation Game", "year": "2014", "lang": "en", "watched": true}]}

Wie Sie im obigen Beispiel sehen können, ist der ausgegebene JSON-String ohne die richtige Formatierung schwer zu lesen. Um Einrückungen hinzuzufügen, können Sie den optionalen Parameter indent verwenden.

Setzen Sie dazu indent auf eine Ganzzahl, beispielsweise 2, wie unten gezeigt:

json_str2 = json.dumps(py_dict, indent = 2)
print(json_str2)

# Ausgabe
{
  "books": [
    {
      "title": "The Wind in the Willows",
      "author": "Kenneth Grahame",
      "year": "1908"
    },
    {
      "title": "To the Lighthouse",
      "author": "Virginia Woolf",
      "year": "1927"
    }
  ],
  "movies": [
    {
      "title": "The Imitation Game",
      "year": "2014",
      "lang": "en",
      "watched": true
    }
  ]
}

Beachten Sie, dass die Ausgabe nun mit Einrückungen formatiert und leichter lesbar ist.

💡Hinweis: Wenn Sie die Schlüssel in alphabetischer Reihenfolge sortieren möchten, können Sie den Parameter sort_keys auf True setzen.

Wie im nachstehenden Code-Snippet zu sehen, wurden die Schlüssel nun alphabetisch sortiert:

json_str2 = json.dumps(py_dict, indent = 2, sort_keys=True)
print(json_str2)

# Ausgabe
{
  "books": [
    {
      "author": "Kenneth Grahame",
      "title": "The Wind in the Willows",
      "year": "1908"
    },
    {
      "author": "Virginia Woolf",
      "title": "To the Lighthouse",
      "year": "1927"
    }
  ],
  "movies": [
    {
      "lang": "en",
      "title": "The Imitation Game",
      "watched": true,
      "year": "2014"
    }
  ]

Die Schlüssel erscheinen jetzt in alphabetischer Reihenfolge: „Autor“, „Titel“ und „Jahr“.

Bisher haben Sie gelernt, wie Sie in Python mit JSON-Strings arbeiten. Im nächsten Abschnitt erfahren Sie, wie Sie mit JSON-Dateien umgehen.

So lesen Sie eine JSON-Datei in Python

Um eine JSON-Datei in Python einzulesen, verwenden Sie die folgende Syntax:

json.load(<json-file>) 

# wobei <json-file> eine beliebige gültige JSON-Datei ist.

Beachten Sie, dass hier die Methode load() anstelle von loads() verwendet wird. Die loads()-Methode liest einen JSON-String, während load() eine JSON-Datei liest.

Bei der Arbeit mit Dateien in Python ist die Verwendung von Kontextmanagern empfehlenswert. Sie können Dateien zwar auch ohne Kontextmanager wie folgt lesen:

my_file = open('students.json','r')

contents = my_file.read()

print(contents)

file.close()

Wenn Sie die Datei nicht schließen, können möglicherweise Ressourcen unnötig belegt werden.

Bei der Verwendung von Kontextmanagern werden die Dateien jedoch automatisch geschlossen, sobald die Dateibearbeitung abgeschlossen ist.

Sie können Kontextmanager zum Lesen von Dateien verwenden, wie unten dargestellt:

with open('students.json','r') as file:   
   data = json.load(file) 
   print(data) 

# Ausgabe 

{'students': [{'roll_num': 'cs27', 'name': 'Anna', 'course': 'CS'}, 
{'roll_num': 'ep30', 'name': 'Kate', 'course': 'PHY'}]}

Beim Lesen aus einer Datei geben Sie den Modus „Lesen“ an, im obigen Code durch „r“ gekennzeichnet.

Hinweis: Um einfach durch das aktuelle Verzeichnis zu navigieren, stellen Sie sicher, dass sich die JSON-Datei im gleichen Ordner wie main.py befindet, wie in der Abbildung gezeigt. Wenn sich Ihre JSON-Datei in einem anderen Ordner befindet, geben Sie unbedingt den Pfad zu dieser Datei an.

Lesen Sie die JSON-Datei in Python ein.

Im nächsten Abschnitt lernen Sie, wie Sie in eine JSON-Datei schreiben können.✍

So schreiben Sie in Python in eine JSON-Datei

Um in eine vorhandene JSON-Datei zu schreiben oder eine neue JSON-Datei zu erstellen, verwenden Sie die Methode dump() wie folgt:

json.dump(<dict_obj>,<json_file>)

# wobei <dict_obj> ein Python-Wörterbuch ist

# und <json_file> die JSON-Datei.

Die obige Syntax speichert also das Wörterbuch <dict_obj> in der JSON-Datei <json_file>.

Im vorherigen Abschnitt hatten wir das Wörterbuch py_dict. Speichern wir es nun in einer neuen JSON-Datei und nennen sie new_file.json.

Die folgende Codezelle demonstriert, wie Sie die Funktion dump() verwenden können:

with open('new_file.json','w') as file:
  json.dump(py_dict,file)

Hinweis: Das Öffnen einer Datei im Schreibmodus (w) überschreibt den Inhalt, falls die Datei bereits vorhanden ist. Wenn die Datei nicht existiert, wird sie neu erstellt.

Nachdem Sie die obige Codezelle ausgeführt haben, werden Sie feststellen, dass im aktuellen Arbeitsverzeichnis eine neue JSON-Datei erstellt wurde. Sie können den Inhalt der JSON-Datei überprüfen.

Erstellen Sie eine JSON-Datei in Python.

Beim Schreiben in Dateien ist das Hauptziel die Datenspeicherung. Wenn Sie die Formatierung beibehalten möchten, können Sie auch die Parameter indent und sort_keys verwenden.

Fazit

⏲ Zeit für eine kurze Zusammenfassung.

In diesem Tutorial haben Sie Folgendes gelernt:

  • Die Grundlagen der Verwendung von JSON.
  • Die Verwendung der Methoden loads() und load() zum Lesen von JSON-Strings bzw. JSON-Dateien.
  • Die Anwendung der Methoden dumps() und dump() zum Ausgeben von Python-Wörterbüchern in JSON-Strings bzw. JSON-Dateien.

Ich hoffe, dieses Tutorial war hilfreich für Sie. Viel Spaß beim Weiterlernen!

Sie können sich auch JSON-Tools ansehen, um Daten zu analysieren, zu formatieren und zu validieren.