Tag Archives: JSON

Daten mit JSON repräsentieren

Spätestens seit dem Softwareentwicklungspraktikum habe ich eine gefühlte Lücke in meiner gedanklichen Werkzeugkiste: Wie repräsentiere ich einfache Daten mit wenig Aufwand möglichst gut lesbar für Mensch und (verschiedene) Maschinen?

Die heute kanonische Antwort scheint stets XML als standardisiertes Metadatenformat mit vielfältiger Toolunterstützung zu sein. In manchen Fällen mag das gerechtfertigt sein, mir erschien der Overhead insbesondere bei einfachen Datenstrukturen aber unangebracht; insbesondere das Monster DomParser hat uns viele Flüche entlockt. Wir stiegen dann auf JDOM um, was zumindest eine angenehmere Bibliothek ist, aber natürlich am sperrigen Datenformat nichts ändert. Auch sind XML-Sprachen oft kaum bis gar nicht lesbar, weil man sich durch abstrakte Elemente und Namespaces wühlen muss.

Beim Prokrastinieren fand ich heute Hinweise auf JSON. Diese schlanke Sprache füllt meine Lücke insofern, als dass sie für die meisten Daten relativ simpler Struktur ein sehr einfaches Darstellungsformat bietet, das für jeden Programmierer intuitiv verständlich sein sollte. Dabei geht es von Objekten aus, die sich durch Paare aus Schlüsseln und Werten auszeichnen. Andere Objekte sind dabei als Werte natürlich erlaubt. So könnte man zum Beispiel formulieren:

{
  "titel" : "Beispielbuch",
  "autoren" : ["Max M.", "Jutta J."],
  "isbn" : 123456789,
  "verlag" : {
    "name" : "Beispielverlag",
    "ort" : "Musterstadt"
  },
  "taschenbuch" : false
}

Würde man XML nutzen wollen, sähe das vielleicht so aus:

BeispielbuchMax M.Jutta J.123456789BeispielverlagMusterstadtfalse

Hier missfällt mir spontan, dass nicht klar ist, ob man einen Wert nun als Element oder Attribut modellieren sollte. Auch fällt direkt auf, dass viel Text nur für die Strukturierung der Daten mit Tags aufgebracht werden muss und so die Lesbarkeit verschlechtert.

Die offizielle Homepage liefert umfassende Informationen zu JSON und eine Liste mit vielen Sprachen, für die bereits Bibliotheken für die Arbeit mit JSON existieren. Ganz unten finden sich noch einige Links zu interessanten Beiträgen unter anderem zur Diskussion “XML vs. JSON”.

Ich bin froh, JSON heute entdeckt zu haben, und werde bei nächster sich bietenden Gelegenheit austesten, wie es sich in ein System integrieren lässt. Eine Allzweckwaffe ist JSON sicher nicht: Da es eine reine Syntaxdefinition ist, gibt es keine Semantik hinter der Darstellung. Jegliche Form von Restriktionen an Daten muss daher von jedem verarbeitenden Programm selbst validiert werden; ein universeller Validator, wie es ihn für XML gibt, ist nicht denkbar. In Kontexten, wo man sich auf die Einhaltung von Konventionen verlässt, ist das möglicherweise aber ohnehin nicht nötig.