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!

Python - JSON

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