Holger's Code · July 25, 2026

JSON mit Delphi

Ein sechsteiliger Kurs über JSON für Delphi-Entwickler — von dem, was JSON eigentlich ist, über Datumswerte, die drei JSON-APIs der RTL und die Serialisierung, bis zum Einbetten von Binärdaten und echten Bildern per base64. Mit lauffähigem Delphi-Code und den Denkmodellen, die alles selbstverständlich machen.

By Dr. Holger Flick

Fast alles, was Ihre Delphi-Anwendung nach außen sagt, sagt sie in JSON. Der REST-Aufruf beim Zahlungsanbieter, die Konfigurationsdatei beim Start, der Webhook von GitHub, die Antwort eines Wetterdienstes oder eines LLM — all das kommt in demselben kleinen Textformat mit geschweiften und eckigen Klammern an, das Sie schon tausendmal getippt haben. Die meisten von uns haben es nebenbei gelernt: gerade genug, um das Feld herauszuholen, nie ganz genug, um sicher zu sein, was das Format eigentlich verspricht.

Dieses Tutorial ist der Kurs, der das behebt, ausgeliefert als sechsteilige Artikelserie. Er beginnt vor dem Code — mit dem, was JSON ist, und den zwei Typen, die es bewusst nicht hat — und greift erst dann zu Pascal, sodass der Code, wenn er kommt, selbstverständlich statt magisch wirkt. Unterwegs klärt er die Dinge, die still und leise echte Nachmittage kosten: warum die RTL gleich drei JSON-APIs mitbringt, warum Serialisierung auf eine Weise scheitert, die sich auf eine einzige falsche Annahme zurückführen lässt, und was base64 wirklich mit Ihren Bytes macht.

Lesen Sie die Teile der Reihe nach — jeder setzt genau dort an, wo der vorherige aufgehört hat, und der spätere Code stützt sich auf die früheren Denkmodelle.

Teil 1 — Was JSON eigentlich ist

Wir sind längst von JSON umgeben — hier ist, was es wirklich ist

Vor der ersten Zeile Pascal: was JSON wirklich ist, warum sich die ganze Branche darauf geeinigt hat, warum es immer wieder „das, was XML abgelöst hat" genannt wird, und aus welcher überraschend kleinen Menge von Regeln sein gesamtes Datenmodell besteht. Am Ende können Sie jedes JSON-Dokument ansehen, egal wie tief verschachtelt, und die wenigen Bausteine erkennen, aus denen es zusammengesetzt ist — das Denkmodell, auf dem jede Bibliothek dieser Serie aufbaut.

Teil 2 — Der Typ, den JSON nicht hat: Datum und Zeit

Der Datumstyp, den JSON nicht hat

In Delphi ist ein Datum ein echter Typ, den Compiler und Debugger verstehen. Serialisieren Sie eines nach JSON, verschwindet das alles — denn zu JSONs sechs Werttypen gehört kein Datum, also ist ein Datum in JSON gar kein Typ, sondern eine Konvention, auf die sich beide Seiten außerhalb des Formats einigen müssen. Dieser Teil behandelt die zwei Konventionen, die die Welt tatsächlich verwendet, was jede kostet und wie Sie sie mit System.DateUtils korrekt erzeugen und einlesen — bevor die falsche Wahl eine Rechnung einen Tag zu früh datiert oder Ihre Zeitstempel ins Jahr 2033 springen lässt.

Teil 3 — Eine RTL, drei Wege, JSON zu sprechen

Eine RTL, drei Wege, JSON zu sprechen

Jetzt der Code — und eine Tatsache, die erfahrene Delphi-Entwickler überrascht: Die RTL gibt Ihnen nicht eine JSON-API, sondern drei, in verschiedenen Units, mit wirklich unterschiedlichen Stärken, und die meisten begegnen nur der ersten. Das ist völlig in Ordnung — bis ein 300-MB-Export den Prozess mit sich reißt. Dieser Teil geht alle drei durch, sagt Ihnen, wann Sie zu welcher greifen, und entwirrt die zweite, völlig eigenständige JSON-Welt namens REST.Json in Ihrer uses-Klausel: woher sie kommt und wie Sie beide auf einen Blick auseinanderhalten.

Teil 4 — Serialisierung: Objekte in JSON verwandeln

Objekte sind keine Daten — Serialisierung wandelt Objekte in Daten

JSON Feld für Feld zu bauen, ist bei kleinen Nutzdaten ehrlich und bei einer Klasse mit zwölf Feldern mühsam. Der Wunsch — verwandle einfach mein Objekt in JSON — hat einen Namen, Serialisierung, und Delphi kann das. Doch dieser Teil nimmt sich zuerst Zeit für die Bedeutung des Wortes, denn der Wunsch verbirgt eine Annahme, die nicht stimmt: dass ein Objekt Daten sei. Ist es nicht — es ist Daten plus Identität plus Verhalten plus Referenzen plus, oft genug, ein Handle auf etwas, das nur existiert, während Ihr Prozess läuft. Fast jeder Serialisierungsfehler geht auf diese Verwechslung zurück, und hier lernen Sie, ihn kommen zu sehen.

Teil 5 — Binärdaten und base64, erklärt

Base64: Das, was alle benutzen und niemand erklärt

Der zweite Typ, den JSON nicht hat, und der schwierigere: Binärdaten. Ein JPEG, ein PDF, ein Zertifikat — keines davon ist ein String, eine Zahl, ein Boolean oder null, und keine Konvention macht aus einem JPEG eine Zahl. Die Antwort der Branche ist base64, und die meisten, die es korrekt verwenden, könnten nicht sagen, was es tut — „es komprimiert", „es verschlüsselt", beides falsch, das zweite gefährlich. Kein Delphi-Code hier: Dieser Teil erklärt, was Binärdaten sind, warum JSON sie wirklich nicht tragen kann und was base64 auf Bit-Ebene mit Ihren Bytes macht — damit der Code in Teil 6 selbstverständlich wird.

Teil 6 — Von TBitmap nach JSON und zurück

Von TBitmap nach JSON und zurück

Die Belohnung, in lauffähigem Code. Kodieren und Dekodieren mit TNetEncoding, eine echte RTL-Falle, die stillschweigend JSON erzeugt, das Ihre Konsumenten ablehnen könnten, und vollständige Rundläufe mit echten Bildern — TBitmap und TJPEGImage — mit nichts außerhalb von RTL und VCL. Am Ende können Sie ein Bild in ein JSON-Dokument packen und dasselbe Bild wieder herausholen — und wissen genau, welche Schritte Daten verlieren können und welche nicht.


Was Sie danach können

Arbeiten Sie sich durch alle sechs Teile, und JSON hört auf, ein Format zu sein, für das Sie Zauberformeln kopieren, und wird eines, das Sie wirklich verstehen:

  • Jedes JSON-Dokument lesen und jeden Baustein benennen, aus dem es besteht.
  • Datumswerte über die Leitung bringen, ohne jemandem den Tag oder das Jahrzehnt zu verschieben.
  • Die richtige JSON-API der RTL wählen — und wissen, warum REST.Json eine eigene Welt ist.
  • Objekte sicher serialisieren und dabei erkennen, welche Teile eines Objekts je wirklich Daten waren.
  • base64 erklären — was es tut, was es kostet und was es nicht schützt.
  • Echte Bilder durch JSON schleusen und dabei genau wissen, wo Daten verloren gehen können.

JSON ist ein kleines Format mit ein paar scharfen Kanten. Lernen Sie die Kanten einmal, und jede API, mit der Sie für den Rest Ihrer Laufbahn sprechen, wird einfacher.