JavaScript Object Notation
aus Wikipedia, der freien Enzyklopädie
Die JavaScript Object Notation, kurz JSON (IPA: /ˈdʒeɪsʌn/), ist ein kompaktes Datenformat in für Mensch und Maschine einfach lesbarer Textform zum Zweck des Datenaustauschs zwischen Anwendungen. Obwohl der Name auf eine alleinige Verwendung in JavaScript hindeutet, ist JSON ein unabhängiges Format, welches theoretisch in jeder Programmiersprache eingesetzt werden kann.
Inhaltsverzeichnis |
[Bearbeiten] Unterschied zu XML
In JSON werden die gleichen Daten meist kompakter kodiert als in einer XML-Darstellung, so dass der Nutzdatenanteil höher (also der sogen. Overhead geringer) ist. Der JSON-Code erscheint dadurch häufig auch besser lesbar. Da XML-Dateien heutzutage meist komprimiert und die XML-Dateiinhalte meist in einem XML-Editor betrachtet werden, wirken sich beide Unterschiede in der Praxis jedoch selten aus. Die große Stärke von JSON ist die Tatsache, dass es sich bei der Definition selbst um valides JavaScript handelt. Damit lässt sich eine JSON-Definition in JavaScript direkt mit der eval()-Funktion in ein JavaScript-Objekt umsetzen (was in der Praxis jedoch überall dort unterlassen wird, wo man Manipulationscode einschleusen könnte).
XML ist eine Auszeichnungssprache und somit vielseitiger einsetzbar als JSON, welches keine Auszeichnungssprache, sondern ein Datenaustauschformat ist. XML ist weiter verbreitet, wird jedoch von JSON aufgrund seiner Einfachheit dort zurückgedrängt, wo keine komplizierten Auszeichnungen notwendig sind.
Beide Formate sind nicht zum Repräsentieren von großen Binärdatenmengen geeignet, da beide keinen Binärdatentyp unterstützen.
[Bearbeiten] Datenstrukturen
JSON kennt Objekte, Arrays, Zeichenketten, Zahlen, boolesche Werte (true, false) und null. Daten können beliebig verschachtelt werden, beispielsweise ist ein Array von Objekten möglich. Als Zeichenkodierung benutzt JSON standardmäßig UTF-8; UTF-16 und UTF-32 sind auch möglich.
[Bearbeiten] Formatdefinition
- Ein Objekt beginnt mit
{und endet mit}. Es kann eine durch Kommata geteilte, ungeordnete Liste von Eigenschaften enthalten. - Eine Eigenschaft besteht aus einem Schlüssel und einem Wert, getrennt durch einen Doppelpunkt.
- Wert einer Eigenschaft kann ein weiteres Objekt sein.
- Ein Schlüssel ist eine Zeichenkette.
- Ein Wert ist ein Objekt, ein Array, eine Zeichenkette, eine Zahl oder einer der Ausdrücke
true,falseodernull. - Ein Array beginnt mit
[und endet mit]. Es kann eine durch Kommata geteilte, geordnete Liste von Werten enthalten. - Eine Zeichenkette beginnt und endet mit Anführungszeichen (
"). Sie kann Unicode-Zeichen und Escape-Sequenzen enthalten. - Ein boolescher Wert wird durch die Ausdrücke
truebzw.falsedargestellt. Es werden keine Anführungszeichen hierfür gesetzt. - Eine Zahl ist eine Folge der Ziffern
0-9. Diese Folge kann durch ein negatives Vorzeichen−eingeleitet und einen Dezimalpunkt.unterbrochen sein. Die Zahl kann durch die Angabe eines ExponenteneoderEergänzt werden, dem ein Vorzeichen+oder−und eine Folge der Ziffern0-9folgt. - Leerraum-Zeichen sind beliebig verwendbar.
[Bearbeiten] Beispiel
{ "Kreditkarte" : "Xema", "Nummer" : "1234-5678-9012-3456", "Inhaber" : { "Name" : "Reich", "Vorname" : "Rainer", "Geschlecht" : "männlich", "Vorlieben" : [ "Reiten", "Schwimmen", "Lesen" ], "Alter" : null }, "Deckung" : 2e+6, "Währung" : "EURO" }
[Bearbeiten] Einsatzgebiete
- In Verbindung mit JavaScript on Demand (JOD) oder Ajax zur Übertragung von Daten zwischen Client und Server.
- Ersatz für XML in Bereichen, wo Ressourcen (Speicherplatz, CPU-Leistung) sparsam eingesetzt werden sollen. Dies gilt im Besonderen bei der Entwicklung von desktopähnlichen Webanwendungen.
[Bearbeiten] Ähnliche Technologien
Mit YAML existiert eine ähnliche Technologie. Allerdings ist YAML eine Markup-Sprache zur reinen Serialisierung und in keiner Sprache gültiger Code. Aber auch hierbei handelt es sich um einen „Document Object Model“-Dateityp. YAML kann als Obermenge von JSON angesehen werden, da jedes JSON-Dokument auch ein valides YAML-Dokument ist.[1]
Mit BISON (Binary Interchange Standard and Object Notation) wurde auch ein kompakteres, weil binäres JSON eingeführt.[2]
NextSTEP bzw. MacOS X kennt eine ähnliche Technik, um einfache Objektbäume zu laden oder zu speichern, sie heißen dort „Property Lists“. Diese erlauben ebenfalls die Speicherung von Werten der Typen Array, Dictionary, boolescher Wert, Binärdaten (Base64-kodiert), Datum, Zahl und Zeichenketten, entweder als XML, als kompaktes Binärformat oder als ASCII bzw. UTF-8.
Symbolische Ausdrücke in Lisp-Notation beschreiben sowohl Daten als auch Code.
BERT ist ein Binärformat, das auf Erlang basiert und hat somit eine ähnliche Herkunft, wie JSON. Ähnlich zu JSON gibt es auch ein auf BERT basierendes RPC-Format.[3]
[Bearbeiten] Weblinks
- json.org deutsche Einführung auf der offiziellen JSON-Seite (weitere Sprachen verfügbar)
- JSON als XML-Alternative Kurze Einführung
- Speeding Up AJAX with JSON Einführung in JSON, bei der die Unterschiede zu XML herausgearbeitet werden (Englisch)
- RFC 4627 application/json, ein zusätzlicher MIME-Typ für JSON, zur Unterscheidung von JavaScript
- JSON Formatter Online-JSON-Formatierer (Englisch)