JSON Javascript Object Notation

Die JavaScript Object Notation ist ein kompaktes Datenformat in einer einfach lesbaren Textform für den Datenaustausch zwischen Anwendungen. JSON ist von Programmiersprachen unabhängig. Parser und Generatoren existieren in allen verbreiteten Sprachen.

Im Normalfall wird die Dateiendung “*.JSON” verwendet. Der Inhalt eines JSON Dokuments ist grundsätzlich Objektorientiert aufgebaut.

Ein JSON Dokument beginnt und endet immer mit ‘{‘ und ‘}’. Zwischen den geschweiften Klammern werden die Inhalte platziert. Die geschweiften Klammern umfassen ein Objekt. Im Dokument selbst können wiederum weitere Objekte definiert werden. Ein Datenfeld wird mit einem Namen eingeleitet und der Wert folgt nach einem Doppelpunkt. Der Wert kann dann wieder ein Objekt sein.

JSON Daten Typen

In JSON kannst du verschiedene Datentypen verwenden:

  • Strings: Eine Sequenz von Zeichen, umgeben von doppelten Anführungszeichen. Zum Beispiel: "Hallo Welt".
  • Nummern: Ganze Zahlen oder Fließkommazahlen. Es gibt keine Unterscheidung zwischen integer und float, somit ist 25 und 25.0 beide gültig.
  • Booleans: Der Wert entweder true oder false.
  • Null: Ein literal null wird verwendet, um einen leeren oder nicht existenten Wert zu repräsentieren.
  • Objekte: Wie bereits erwähnt, eine Menge von Schlüssel-Wert-Paaren.
  • Arrays: Eine Liste von Werten, die oben genannte Typen einschließen können.

Um mit Python und JSON zu arbeiten, muss es importiert werden:

import JSON

Dann kann die Datei festgelegt werden, unter der die Daten von JSON gespeichert werden sollen.

with open(‚daten.json‘, ‚r‘) as jsonfile:

Hier sind einige wichtige Möglichkeiten und Funktionen für die Arbeit mit JSON in Python:

1. JSON-Daten lesen und schreiben

import json

# JSON-Datei lesen
with open('daten.json', 'r') as jsonfile:
    daten = json.load(jsonfile)

# JSON-Datei schreiben
with open('neue_daten.json', 'w') as jsonfile:
    json.dump(daten, jsonfile, indent=4)

2. JSON-Strings parsen und erstellen

# JSON-String parsen
json_string = '{"name": "Max", "alter": 30}'
daten = json.loads(json_string)

# Python-Objekt in JSON-String umwandeln
python_dict = {"name": "Anna", "alter": 25}
json_string = json.dumps(python_dict)

3. Arbeiten mit verschachtelten Strukturen

JSON unterstützt verschachtelte Strukturen, die in Python als verschachtelte Dictionaries und Listen dargestellt werden:

komplexe_daten = {
    "person": {
        "name": "Max",
        "alter": 30,
        "hobbys": ["Lesen", "Sport", "Reisen"]
    }
}

# Zugriff auf verschachtelte Daten
name = komplexe_daten["person"]["name"]
erstes_hobby = komplexe_daten["person"]["hobbys"][0]

4. Formatierung und Optionen

# JSON mit Einrückung formatieren
formatierter_json_string = json.dumps(daten, indent=4)

# Sortierte Schlüssel
sortierter_json_string = json.dumps(daten, sort_keys=True)

# Nicht-ASCII-Zeichen beibehalten
unicode_json_string = json.dumps(daten, ensure_ascii=False)

5. Fehlerbehandlung

try:
    daten = json.loads(ungültiger_json_string)
except json.JSONDecodeError as e:
    print(f"Fehler beim Parsen des JSON: {e}")

6. Benutzerdefinierte Objekte

Für komplexere Anwendungsfälle können Sie benutzerdefinierte Encoder und Decoder erstellen:

class CustomEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, CustomObject):
            return obj.to_dict()
        return super().default(obj)

json.dumps(custom_obj, cls=CustomEncoder)

Diese Möglichkeiten machen JSON zu einem vielseitigen und leistungsfähigen Tool für die Datenspeicherung und den Datenaustausch in Python-Anwendungen.


Um den Inhalt einer JSON-Datei sinnvoll anzuzeigen, können Sie die json.dumps() Funktion in Python verwenden. Hier sind einige nützliche Optionen:

  1. Verwenden Sie den indent Parameter für eine leserliche Einrückung:
import json

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

formatted_json = json.dumps(data, indent=4)
print(formatted_json)
  1. Sortieren Sie die Schlüssel alphabetisch mit sort_keys=True:
formatted_json = json.dumps(data, indent=4, sort_keys=True)
  1. Für nicht-ASCII-Zeichen, verwenden Sie ensure_ascii=False:
formatted_json = json.dumps(data, indent=4, ensure_ascii=False)
  1. Passen Sie die Trennzeichen an:
formatted_json = json.dumps(data, indent=4, separators=(", ", ": "))

Diese Optionen machen die JSON-Ausgabe lesbarer und übersichtlicher. Für eine noch kompaktere Darstellung von Listen können Sie die pprint-Bibliothek verwenden:

import pprint

pretty_json = pprint.pformat(data, compact=True, width=88)
print(pretty_json.replace("'", '"'))

Dies erzeugt eine kompakte, aber immer noch gut lesbare Darstellung der JSON-Daten.