Über JSON
JSON (JavaScript Object Notation) ist ein Dateiformat und ein Datenspeicherstandard, der Schlüssel-Wert-Paare zum Speichern und Austauschen von Daten verwendet. Es ist das am weitesten verbreitete Datenaustauschformat, das häufig in RESTful-APIs, schlanken Datenbanken, Konfigurationsdateien und anderer Offline- oder Online-Software verwendet wird, die Daten speichern, abrufen und austauschen muss. Die meisten Programmiersprachen enthalten standardmäßig Bibliotheken zum Analysieren und Schreiben von JSON-Daten, und JSON ist ein programmiersprachenunabhängiges Datenformat. In einer JSON-Datei oder Nutzlast gespeicherte Werte enthalten normalerweise Zeichenfolgen, Zahlen und serialisierbare Datentypen wie Listen (Arrays).
JSON- und Python-Wörterbücher
JSON-Daten in Python werden mithilfe der Lademethode in ein Wörterbuchobjekt konvertiert. Es wird oft gesehen, dass einige Leute Json-Daten und ein Python-Wörterbuch gleichsetzen, da die Syntax zum Definieren beider fast gleich ist. Json-Daten sind jedoch nichts anderes als eine Textzeichenfolge, die in einer starren Syntax strukturiert ist, während ein Python-Wörterbuch ein im Speicher gespeichertes Datenstrukturobjekt ist. Wenn Sie Wörterbuchdaten in einer Textdatei speichern oder an ein anderes Nicht-Python-Programm senden möchten, müssen Sie sie zuerst in eine Textzeichenfolge (Bytes) konvertieren. Dieser ausgegebene / konvertierte Textstring ist in der Standardsyntax von JSON definiert und der Prozess der Konvertierung eines Python-Wörterbuchs in einen Json-kompatiblen String wird als Serialisierung bezeichnet.
Lesen und Dumpen von JSON-Daten in Python
JSON-Daten können als Antwort von einem Server abgerufen, aus einer Datei gelesen, aus URL-Abfrageparametern geschnitten werden und so weiter. Dieser Artikel konzentriert sich hauptsächlich auf das Lesen von Json-Daten aus einer lokal gespeicherten Datei. Nehmen wir an, eine test.json-Datei enthält folgende Daten:
{'Codename': 'Eoan Hermeline', 'Version': 'Ubuntu 19.10'}
Um die Datei test.json in Python zu lesen, können Sie den folgenden Code verwenden:
importierenjson
mit offen ('test.json') wieF:
Daten=json.Belastung(F)
entsorgen=json.deponiert(Daten)
drucken (Daten)
drucken (Typ(Daten))
drucken (entsorgen)
drucken (Typ(entsorgen))
Die erste Zeile im obigen Code importiert das Json-Modul. In der nächsten Zeile wird mit open verwendet, um den Dateiinhalt sicher zu lesen. Innerhalb des with open-Blocks wird die Methode json.load verwendet, um den Dateiinhalt in der Datenvariablen zu lesen und zu speichern. Die im vorherigen Schritt geladenen Daten werden mit der Methode json.dump zurück in einen json-String konvertiert. Wenn Sie den obigen Code ausführen, wird die folgende Ausgabe angezeigt:
{'Code Name':'Eoan Hermelin', 'Ausführung':'Ubuntu 19.10'}<Klasse 'dikt'>
{'Code Name':'Eoan Hermelin', 'Ausführung':'Ubuntu 19.10'}
<Klasse 'str'>
Beachten Sie in der obigen Ausgabe, dass die json.load-Methode Json-Rohdaten in ein Python-Wörterbuch liest, während die json.dumps-Methoden ein Wörterbuch in eine Zeichenfolge konvertiert, die mit der JSON-Struktur kompatibel ist. Nachdem ein JSON-Objekt in ein Python-Wörterbuchobjekt konvertiert wurde, können Sie integrierte Python-Wörterbuchmethoden verwenden, um die Daten zu verarbeiten. Das obige Beispiel ist ziemlich einfach und enthält keine Arrays in JSON-Daten oder verschachtelten Werten. In Python können Sie diese Werte jedoch wie alle anderen verschachtelten Wörterbücher und Listen behandeln.
JSON-Daten sortieren und hübsch drucken
Die Methode json.dump unterstützt einige optionale Parameter zum Sortieren von Schlüsseln und zum hübschen Drucken der Ausgabe zur besseren Lesbarkeit.
importierenjsonmit offen ('test.json') wieF:
Daten=json.Belastung(F)
entsorgen=json.deponiert(Daten,sort_keys=Wahr,Einzug=4)
drucken (entsorgen)
Der obige Code zeigt die folgende Ausgabe:
{'Codename': 'Eoan Hermelin',
'Version': 'Ubuntu 19.10'
}
Datentypkonvertierungen
Die folgende Liste veranschaulicht, wie JSON-Werte in Python-Objekte konvertiert werden und umgekehrt.
JSON | Python |
Schnur | P |
Nummer | int oder float |
wahr falsch | Wahr falsch |
Null | Keiner |
Array | aufführen |
Objekt | diktieren |
Json.tool-Befehlszeilenmodul
Python enthält ein nettes Befehlszeilen-Dienstprogramm json.tool, mit dem JSON-Strings und -Dateien validiert und hübsch gedruckt werden können.
$ echo'{'Codename': 'Eoan Hermeline', 'Version': 'Ubuntu 19.10'}'| python3-m json.WerkzeugWenn Sie den obigen Befehl ausführen, wird die folgende Ausgabe angezeigt:
{'Codename': 'Eoan Hermelin',
'Version': 'Ubuntu 19.10'
}
Sie können json.tool auch mit JSON-Dateien verwenden. Ersetzen Sie in_file und out_file im folgenden Befehl durch Ihre gewünschten Werte:
$ python3-m json.Werkzeugin_file out_fileAbgesehen von hübschem Drucken, Sortieren und Validieren von JSON-Daten macht json.tool nichts anderes. Wenn Sie also JSON-Daten manipulieren möchten, müssen Sie Ihren eigenen benutzerdefinierten Code mit dem integrierten JSON-Modul schreiben.