JSON
JSON ist ein Textformat für Objekte, Arrays und Werte, das für APIs, Annotationen und Modellausgaben verwendet wird. Behandelt werden Syntaxregeln, ML-Anwendungen, JSON Lines und Code.
JSON, kurz für JavaScript Object Notation, ist ein leichtgewichtiges, textbasiertes Format zum Speichern und Austauschen strukturierter Daten. Douglas Crockford spezifizierte es Anfang der 2000er-Jahre auf Grundlage der Syntax von JavaScript-Objektliteralen. Heute ist es als IETF-RFC 8259 und ECMA-404 standardisiert. JSON ist sprachunabhängig, für Menschen lesbar und wird von der Standardbibliothek fast jeder Programmiersprache verarbeitet. Dadurch ist es das Standardformat für Web-APIs. Im Bereich des maschinellen Lernens (ML) transportiert es Vorhersagen aus Inferenz-Engines, speichert Datensatzannotationen, protokolliert Metadaten von Experimenten und legt die strukturierten Ausgaben von großen Sprachmodellen (LLMs) fest.
JSON-Syntax#
Ein JSON-Dokument besteht aus zwei Containern und vier Arten von Werten:
- Objekte: Ungeordnete Mengen von Schlüssel-Wert-Paaren in geschweiften Klammern, zum Beispiel
{"name": "bus", "confidence": 0.94}. Schlüssel müssen Zeichenfolgen in doppelten Anführungszeichen sein. - Arrays: Geordnete Listen in eckigen Klammern, zum Beispiel
[48.5, 398.0, 245.3, 902.1]. - Werte: Zeichenfolgen, Zahlen, die Literale
true,falseundnulloder verschachtelte Objekte und Arrays.
Das Format ist streng. Kommentare, nachgestellte Kommas, Zeichenfolgen in einfachen Anführungszeichen sowie die Werte NaN und Infinity sind nicht zulässig. Das Python-Modul json module schreibt jedoch standardmäßig NaN, sofern allow_nan=False nicht gesetzt ist. Dadurch entstehen Dateien, die strenge Parser ablehnen. RFC 8259 weist außerdem darauf hin, dass Zahlen nur innerhalb der doppelten IEEE-754-Genauigkeit zuverlässig übertragen werden können. Daher werden Ganzzahlen größer als 2⁵³ − 1, etwa manche Datenbank-IDs, häufig als Zeichenfolgen übermittelt.
JSON in Workflows des maschinellen Lernens#
Wenn eine Kamera in einem Sicherheitssystem ein Bild an einen Objekterkennungs-Dienst sendet, antwortet die Modellbereitstellung-Schicht in der Regel mit JSON: einem Datensatz pro erkanntem Objekt mit dessen Klasse, Konfidenzwert und Bounding-Box-Koordinaten, bereit für Dashboards, mobile Apps und Dokumentdatenbanken wie MongoDB.
Auch Annotationsformate verwenden JSON. Der COCO-Datensatz speichert alle Labels eines Splits in einer JSON-Datei mit drei Hauptlisten: images enthält Dateinamen und -größen, categories Klassen-IDs und -namen und annotations Einträge, die über IDs auf ein Bild und eine Kategorie verweisen und eine Box als [x, y, width, height] in Pixeln ab der linken oberen Ecke speichern. Das YOLO-Format verwendet stattdessen eine Textdatei pro Bild mit normierten Mittelpunktskoordinaten. Die Konvertierung zwischen den Formaten ist ein routinemäßiger Schritt in Datenannotations-Pipelines. Eine benutzerdefinierte Dataset-Klasse kann YOLO aber auch direkt mit COCO-JSON trainieren.
JSON Lines, auch NDJSON genannt, enthält in jeder Zeile ein vollständiges JSON-Objekt. Dateien lassen sich dann ergänzen, streamen und aufteilen, ohne das gesamte Dokument zu parsen. Das eignet sich für Trainingsprotokolle, Vorhersageströme und die Anweisungsdatensätze, die zum Feinabstimmen von LLMs verwendet werden. Für LLMs beschreibt JSON Schema genau die Felder, die eine Anwendung erwartet. Strukturierte Ausgaben und Funktionsaufrufe beschränken ein Modell darauf, passendes JSON zu erzeugen. GeoJSON, standardisiert als RFC 7946, überträgt das Format auf geografische Merkmale. Dadurch können Satellitenbildanalysen Erkennungen auf einer Karte verorten.
Vorhersagen in JSON konvertieren#
Ultralytics-YOLO-Objekte Results serialisieren ihre Vorhersagen mit to_json() und schreiben einen Datensatz pro Erkennung mit Klassenname, Klassen-ID, Konfidenz und den Boxecken x1, y1, x2, y2 sowie Masken- oder Keypoint-Koordinaten für Modelle zur Instanzsegmentierung und Posenschätzung. Das folgende Beispiel führt YOLO26 auf einem Beispielbild aus und liest das JSON anschließend mit der Python-Standardbibliothek wieder ein:
import json
from ultralytics import YOLO
# Ein vortrainiertes YOLO26-Erkennungsmodell laden und Inferenz ausführen
model = YOLO("yolo26n.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Jede Erkennung als JSON-Zeichenfolge serialisieren (normalize=True würde Boxen auf 0–1 skalieren)
json_string = result.to_json()
# Jeder JSON-Parser kann die Daten wieder einlesen, hier in eine Liste von Python-Dictionaries
detections = json.loads(json_string)
print(json.dumps(detections[0], indent=2))Der ausgegebene Datensatz ist ein JSON-Objekt mit den Schlüsseln name, class und confidence sowie einem verschachtelten Objekt box, das die Eckkoordinaten in Pixeln enthält.
JSON und verwandte Formate#
- YAML: Ein besser lesbares Format, das Kommentare und Einrückungen für die Verschachtelung zulässt und häufig für Trainingskonfigurationen und Datensatzdefinitionen verwendet wird. YAML 1.2 ist als Obermenge von JSON ausgelegt, sodass die meisten JSON-Dokumente gültiges YAML sind.
- XML: Ein tagbasiertes Format, das für Pascal-VOC-Annotationen verwendet wird. Es ist ausführlicher als JSON und unterstützt Attribute, Namensräume und Schemas.
- CSV: Ein einfaches Tabellenformat, das für tabellarische Daten kompakt ist, aber keine verschachtelten Objekte oder Listen darstellen kann.
- Binärformate: Protocol Buffers und MessagePack sind kleiner und schneller zu parsen als JSON, aber für Menschen nicht lesbar. ONNX-Modelldateien werden als Protocol-Buffers-Nachrichten gespeichert.










