Python - JSON: Ein Anfänger-Leitfaden zur JSON-Verarbeitung in Python
Hallo da, zukünftige Python-Meister! Heute werden wir auf eine aufregende Reise in die Welt der JSON in Python aufbrechen. Keine Sorge, wenn du neu in der Programmierung bist – ich werde dein freundlicher Guide sein, und wir werden dies Schritt für Schritt angehen. Am Ende dieses Tutorials wirst du JSON wie ein Profi behandeln!
JSON in Python
Was ist JSON?
JSON, oder JavaScript Object Notation, ist ein leichtgewichtiges Daten-Austauschformat. Stelle dir vor, es sei eine Möglichkeit, Daten zu speichern und zu transportieren – wie eine universelle Sprache, die verschiedene Programme verstehen können. Es ist menschenlesbar (was großartig für uns ist!) und leicht für Maschinen zu analysieren und zu generieren.
In der Programmierwelt ist JSON wie der coole Junge, mit dem jeder gerne Zeit verbringen möchte. Es wird überall verwendet – von Web-APIs bis zu Konfigurationsdateien. Das ist auch der Grund, warum das Arbeiten mit JSON in Python eine so wichtige Fähigkeit ist!
Warum sollte man JSON mit Python verwenden?
Python und JSON sind wie Erdnussbutter und Marmelade – sie funktionieren einfach großartig zusammen! Python hat eingebaute Unterstützung für JSON durch sein json
-Modul. Das bedeutet, du kannst Python-Objekte leicht in JSON umwandeln und umgekehrt.
Lassen Sie uns damit beginnen, das JSON-Modul zu importieren:
import json
Einfach, nicht wahr? Jetzt sind wir bereit, uns in die saftigen Dinge zu stürzen!
JSON-Serialisierung
Serialisierung ist nur ein eleganter Ausdruck dafür, Python-Objekte in JSON-Strings umzuwandeln. Es ist wie das Übersetzen von Python in eine Sprache, die andere Programme verstehen können.
Einfache Serialisierung
Lassen Sie uns mit einem einfachen Python-Wörterbuch beginnen:
mein_dict = {
"name": "Alice",
"age": 30,
"city": "Wonderland"
}
json_string = json.dumps(mein_dict)
print(json_string)
Ausgabe:
{"name": "Alice", "age": 30, "city": "Wonderland"}
Hier nimmt json.dumps()
unser Python-Wörterbuch und verwandelt es in einen JSON-String. Es ist wie Magie, aber besser, weil es tatsächlich Code ist!
Schöne Ausgabe
Manchmal möchten wir, dass unser JSON gut lesbar aussieht. Hier kommt die schöne Ausgabe ins Spiel:
schone_json = json.dumps(mein_dict, indent=4)
print(schone_json)
Ausgabe:
{
"name": "Alice",
"age": 30,
"city": "Wonderland"
}
Der Parameter indent=4
teilt Python mit, 4 Leerzeichen Einzug hinzuzufügen, wodurch unser JSON sauber und ordentlich aussieht.
JSON in eine Datei schreiben
Oft möchten wir unsere JSON-Daten in eine Datei speichern. So geht das:
with open('data.json', 'w') as file:
json.dump(mein_dict, file, indent=4)
Dies erstellt eine Datei namens data.json
und schreibt unseren schön formatierten JSON dorthin. Es ist wie das Speichern einer SMS, aber für Daten!
JSON-Deserialisierung
Deserialisierung ist der umgekehrte Prozess – JSON-Strings zurück in Python-Objekte umwandeln. Es ist wie das Übersetzen dieser universellen Sprache zurück in Python.
Einfache Deserialisierung
Lassen Sie uns mit einem JSON-String beginnen:
json_string = '{"name": "Bob", "age": 25, "city": "Neverland"}'
python_dict = json.loads(json_string)
print(python_dict)
print(type(python_dict))
Ausgabe:
{'name': 'Bob', 'age': 25, 'city': 'Neverland'}
<class 'dict'>
json.loads()
nimmt unseren JSON-String und verwandelt ihn zurück in ein Python-Wörterbuch. Es ist wie Magie in die umgekehrte Richtung!
JSON aus einer Datei lesen
Erinnern wir uns an die Datei, die wir zuvor erstellt haben? Lassen Sie uns sie zurücklesen:
with open('data.json', 'r') as file:
geladene_daten = json.load(file)
print(geladene_daten)
Dies liest die JSON-Daten aus unserer Datei und wandelt sie zurück in ein Python-Objekt. Es ist wie das Öffnen einer gespeicherten SMS und zu lesen!
Fortgeschrittene JSON-Verarbeitung
Nun, da wir die Grundlagen abgedeckt haben, schauen wir uns einige fortgeschrittene Techniken an.
Umgang mit komplexen Datentypen
JSON ist großartig, aber es versteht nur wenige Datentypen von Haus aus. Hier ist eine Tabelle, wie Python-Typen auf JSON-Typen abgebildet werden:
Python Type | JSON Type |
---|---|
dict | object |
list, tuple | array |
str | string |
int, float | number |
True | true |
False | false |
None | null |
Aber was ist mit komplexeren Typen wie datetime-Objekten? Hier kommt benutzerdefinierte Kodierung ins Spiel!
JSONEncoder-Klasse
Die JSONEncoder
-Klasse ermöglicht es uns, benutzerdefinierte Kodierung für Python-Objekte zu definieren, die nicht von JSON nativ unterstützt werden.
Hier ist ein Beispiel mit einem datetime-Objekt:
from datetime import datetime
class DateTimeEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.isoformat()
return super().default(obj)
daten = {
"name": "Charlie",
"birthday": datetime(1990, 5, 15)
}
json_string = json.dumps(daten, cls=DateTimeEncoder)
print(json_string)
Ausgabe:
{"name": "Charlie", "birthday": "1990-05-15T00:00:00"}
Unser benutzerdefinierter Encoder wandelt das datetime-Objekt in einen ISO-Format-String um, den JSON verarbeiten kann.
JSONDecoder-Klasse
Ähnlich ermöglicht die JSONDecoder
-Klasse uns, zu steuern, wie JSON zurück in Python-Objekte decodiert wird.
Hier ist ein Beispiel, das ISO-Format-Sterne zurück in datetime-Objekte umwandelt:
import dateutil.parser
class DateTimeDecoder(json.JSONDecoder):
def __init__(self, *args, **kwargs):
json.JSONDecoder.__init__(self, object_hook=self.object_hook, *args, **kwargs)
def object_hook(self, obj):
for key, value in obj.items():
if isinstance(value, str):
try:
obj[key] = dateutil.parser.parse(value)
except ValueError:
pass
return obj
json_string = '{"name": "Charlie", "birthday": "1990-05-15T00:00:00"}'
dekodierte_daten = json.loads(json_string, cls=DateTimeDecoder)
print(dekodierte_daten)
print(type(dekodierte_daten['birthday']))
Ausgabe:
{'name': 'Charlie', 'birthday': datetime.datetime(1990, 5, 15, 0, 0)}
<class 'datetime.datetime'>
Unser benutzerdefinierter Decoder erkennt den ISO-Format-String und wandelt ihn zurück in ein datetime-Objekt.
Und da hast du es, Leute! Wir haben durch die Welt der JSON in Python gereist, von den Grundlagen der Serialisierung und Deserialisierung bis zu den fortgeschrittenen Bereichen der benutzerdefinierten Encoder und Decoder. Denke daran, Übung macht den Meister, also mach' keine Angst, mit diesen Konzepten zu experimentieren.
JSON mag in Python wie ein kleiner Teil erscheinen, aber es ist eine entscheidende Fähigkeit in der heutigen datengesteuerten Welt. Egal, ob du Webanwendungen baust, mit APIs arbeitest oder Daten analysierst, deine neu erlernten JSON-Fähigkeiten werden dir gut dienen.
Fortsetze das Coden, Lernen und vor allem hab' Spaß mit Python!
Credits: Image by storyset