Programmieren: Datenstrukturen serialisieren mit JSON, YAML, XML und Co.

Für das Speichern, Verschicken und Austauschen von Datenstrukturen gibt es zahlreiche Datenformate. Welches das nützlichste ist, hängt vom Einsatzbereich ab.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 23 Kommentare lesen

(Bild: Thorsten Hübner)

Lesezeit: 15 Min.
Von
  • Jan Mahn
Inhaltsverzeichnis

Ohne verschachtelte Datenstrukturen wäre Programmieren eine wenig vergnügliche Betätigung. Schon in vergleichsweise simplen Anwendungen kommt man schnell an den Punkt, dass man nicht für jeden Wert eine eigene Variable anlegen kann. Plant man etwa eine Anwendung zur Verwaltung eines Fahrrad-Fuhrparks, die Eigenschaften von Fahrrädern sammelt, legt man eine Datenstruktur wie die folgende für ein Fahrrad an:

$bike = [
  "manufacturer" => "Superrad",
  "type" => "Trekking",
  "wheels" => 2,
  "users" => ["Jim", "Tina"],
  "purchase" => "2020-05-15",
  "location" => [
    "lat"=> 52.38628, "lon"=> 9.81034]
];

Dieses Beispiel ist in PHP verfasst, dort heißen solche Datenstrukturen immer Array. Die Zeichenketten wie manufacturer, type und wheels bezeichnet man als Schlüssel, darunter sind die Werte abgelegt. Ähnliche Strukturen, auch assoziative Datenfelder genannt, gibt es in jeder modernen Programmiersprache, sie heißen immer etwas anders: Object, Struct, Dictionary, Slice oder Map. Manchmal nennen die Spracherfinder die Konstrukte auch anders, wenn es sich bei den Schlüsseln um Zahlen statt um Zeichenketten handelt. Auch die Syntax, über die man auf die Daten zugreift, unterscheidet sich von Sprache zu Sprache. In PHP erreicht man den Breitengrad im obigen Beispiel etwa über $bike["location"]["lat"]. In objektorientierten Sprachen ist eine Syntax wie bike.location.lat oder bike->location->lat üblich.

Unabhängig von diesen syntaktischen Unterschieden gibt es aber Gemeinsamkeiten. In den Werten solcher Datenstrukturen kann man grundsätzlich zwei Typen von Daten speichern: auf der einen Seite primitive Datentypen wie Zeichenketten (Strings) und Zahlen (wie Integer oder Fließkommazahlen). Auf der anderen Seite weitere Datenstrukturen – so erreicht man eine Verschachtelung über beliebig viele Ebenen. Im Beispiel finden Sie eine solche Verschachtelung beim Schlüssel $bike["location"].