So analysieren Sie JSON in Python

JSON ist ein beliebtes Format für den Datenaustausch. Python wird mit einem integrierten JSON-Modul geliefert, um JSON-Daten zu analysieren und mit ihnen zu arbeiten. Und dieses Tutorial wird Ihnen alles über die Arbeit mit JSON in Python beibringen.

Am Ende dieses Tutorials haben Sie Folgendes gelernt:

  • die Grundlagen von JSON,
  • wie man JSON-Strings in Python analysiert und erstellt, und
  • wie man in Python aus JSON-Dateien liest und in sie schreibt.

Fangen wir an!⏳

Was ist JSON?

JSON steht für JavaScript Object Notation und ist ein textbasiertes Format für den Datenaustausch. Obwohl JSON ursprünglich von JavaScript-Objekten inspiriert wurde, unterstützen fast alle Programmiersprachen die Arbeit mit JSON.

Wenn Sie jemals mit APIs gearbeitet oder Konfigurationsdateien durchgelesen haben, sind Sie wahrscheinlich auf JSON gestoßen.

📑 Sie senden und empfangen Daten in JSON, wenn Sie APIs abfragen. Und auch bei der Client-Server-Kommunikation in Softwareanwendungen wird JSON häufig eingesetzt. Darüber hinaus können Sie JSON auch für die allgemeine Datenspeicherung verwenden.

Das Format von JSON ist dem eines Python-Wörterbuchs sehr ähnlich. Wörterbücher sind leistungsstarke integrierte Datenstrukturen in Python, die Daten in Schlüssel-Wert-Paaren speichern.

Bevor wir weitermachen, hier sind einige Punkte, die es wert sind, beachtet zu werden:

  • In Python wird ein JSON-Objekt als Wörterbuch gespeichert.
  • Ein Array in JSON wird als Python-Liste gespeichert.
  • In JSON werden die booleschen Werte als wahr und falsch bezeichnet. In Python werden diese in die booleschen Werte True und False umgewandelt.

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

Da das json-Modul Teil der Python-Standardbibliothek ist, müssen Sie es nicht installieren. Sie können wie folgt in Ihr aktuelles Verzeichnis importieren:

import json

So laden Sie einen JSON-String in Python

Die allgemeine Syntax zum Laden einer JSON-Zeichenfolge in Python lautet:

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

Hier,

  • ist das Python-Wörterbuch, in das Sie die JSON-Zeichenfolge laden möchten.
  • ist eine beliebige gültige JSON-Zeichenfolge.

Dadurch wird in das Python-Wörterbuch geladen.

Lassen Sie uns ein Beispiel programmieren. Hier ist json_str ein 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"
        }
    ]
}
'''

Und das folgende Code-Snippet zeigt, wie Sie den JSON-String json_str mit der Methode „loads()“ in ein Python-Wörterbuch laden können. Sie können die integrierte Funktion type() verwenden, um zu überprüfen, ob py_dict ein Python-Wörterbuch ist.

py_dict = json.loads(json_str)

type(py_dict)

# Output: dict

print(py_dict)

# Output
{'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 gezeigt, sind alle Felder in der JSON-Zeichenfolge Schlüssel-Wert-Paare in py_dict.

So erstellen Sie JSON-Strings in Python

Nehmen wir an, Sie haben ein Python-Wörterbuch. Wie erstellt man daraus einen JSON-String?

Sie können dies mit der Methode dumps() mit dieser Syntax tun:

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

Hier,

  • ist das Python-Wörterbuch, aus dem Sie die JSON-Zeichenfolge erstellen möchten.
  • ist die resultierende JSON-Zeichenfolge.

Die Methode dumps() gibt also in einen JSON-String aus.

Zu unserem bestehenden Python-Wörterbuch py_dict. Lassen Sie uns einen neuen Schlüssel „Filme“ hinzufügen. Sie können dies wie im folgenden Code-Snippet tun:

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

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

json_str2 = json.dumps(py_dict)

print(json_str2)

# Output
{"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 die ausgegebene JSON-Zeichenfolge ohne die richtige Formatierung schwer zu lesen. Sie können den optionalen Parameter Einzug verwenden, um einen Einzug hinzuzufügen.

Und Sie können dies tun, indem Sie den Einzug auf eine Ganzzahl wie 2 setzen, wie unten gezeigt:

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

# Output
{
  "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
    }
  ]
}

Beobachten Sie, wie die Ausgabe mit Einrückungen formatiert wurde, und es ist einfach zu befolgen.

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

Wie Sie im Code-Snippet unten sehen können, wurden die Schlüssel jetzt in alphabetischer Reihenfolge sortiert.

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

# Output
{
  "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"
    }
  ]

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

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

So lesen Sie eine JSON-Datei in Python

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

json.load(<json-file>) 

# where <json-file> is any valid JSON file.

Beachten Sie, wie wir die Methode load() und nicht die Methode load() verwenden. load() lädt einen JSON-String, während load() eine JSON-Datei lädt.

Sie sollten die Verwendung von Kontextmanagern in Betracht ziehen, wenn Sie mit Dateien in Python arbeiten. Sie können auch versuchen, Dateien wie folgt zu lesen, ohne den Kontextmanager zu verwenden:

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 verschwendet werden.

Beim Arbeiten mit Kontextmanagern werden die Dateien jedoch automatisch geschlossen, sobald die Dateioperationen abgeschlossen sind.

Und Sie können den Kontextmanager verwenden, um Dateien zu lesen, wie unten gezeigt:

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

# Output 

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

Geben Sie beim Lesen aus einer Datei den Modus als gelesen an – im obigen Code durch „r“ gekennzeichnet.

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

Lesen Sie die JSON-Datei in Python.

Im nächsten Abschnitt erfahren Sie, wie Sie in eine JSON-Datei schreiben.✍

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 gezeigt:

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

# where <dict_obj> is a Python dictionary 

# and <json_file> is the JSON file 

Die obige Syntax speichert also das Wörterbuch in der JSON-Datei .

Im vorherigen Abschnitt hatten wir das Wörterbuch py_dict. Lassen Sie uns das jetzt in eine neue JSON-Datei kopieren. Und nennen wir sie new_file.json.

Und die folgende Codezelle zeigt, 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 vorhanden ist. Wenn die Datei nicht vorhanden ist, wird die Datei erstellt.

Nachdem Sie die obige Codezelle ausgeführt haben, sehen Sie, dass eine neue JSON-Datei im aktuellen Arbeitsverzeichnis erstellt wurde. Und Sie können fortfahren und den Inhalt der JSON-Datei untersuchen.

Erstellen Sie eine JSON-Datei in Python

Beim Schreiben in Dateien ist das Hauptziel die Datenspeicherung. Und 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 gelernt:

  • die Grundlagen der Verwendung von JSON,
  • wie man die Methoden „loads()“ und „load()“ verwendet, um JSON-String- bzw. JSON-Dateien zu lesen,
  • wie man die Methoden dumps() und dump() verwendet, um Python-Wörterbücher in JSON-Strings bzw. JSON-Dateien auszugeben.

Ich hoffe, Sie fanden dieses Tutorial hilfreich. Viel Spaß beim Lernen!

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

  13 coole Tools zum Erstellen animierter Charaktere für Ihr Unternehmen