JSON, kurz für JavaScript Object Notation und gesprochen wie der Name Jason, ist ein kompaktes Computer-Format 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. Es existieren JSON-Implementierungen unter anderem für C, C#, Java, JavaScript, Perl, PHP, Python, Ruby und Smalltalk.
Unterschied zu XML
Der am meisten betonte Unterschied von JSON zu XML ist die etwas kompaktere Kodierung von Datenstrukturen, wodurch im Gegensatz zu XML weniger Overhead produziert wird und die Datenmenge teilweise kleiner ausfällt. Darüber hinaus kann JSON schneller in die nativen Datentypen der eingesetzten Programmiersprache umgewandelt werden. So wird in JavaScript eine JSON-Zeichenkette direkt mit der eval()
-Funktion in ein JavaScript-Objekt umgesetzt.
XML ist eine Auszeichnungssprache (Markup Language) und somit vielseitiger einsetzbar als JSON, welches keine Auszeichnungssprache, sondern ein Datenaustauschformat ist. XML genießt außerdem eine weitere Verbreitung.
Beide Formate sind nicht unbedingt geeignet zum Repräsentieren von großen Binärdaten.
Unterstützte 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.
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.
- Ein Schlüssel ist eine Zeichenkette.
- Ein Wert ist ein Objekt, ein Array, eine Zeichenkette, eine Zahl oder einer der Ausdrücke
true
,false
odernull
. - 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 ein oder mehrere Unicode-Zeichen und Escape-Sequenzen enthalten.
- Ein boolscher Wert wird durch die Ausdrücke true bzw false dargestellt. 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 einem Dezimalpunkt.
unterbrochen sein. Die Zahl kann durch die Angabe eines Exponentene
oderE
ergänzt werden, dem ein Vorzeichen+
oder−
und eine Folge der Ziffern0-9
folgt. - Leerraum-Zeichen sind beliebig verwendbar.
Beispiel
{ "Kreditkarte" : "Xema", "Nummer" : "1234-5678-9012-3456", "Inhaber" : { "Name" : "Reich", "Vorname" : "Rainer", "Geschlecht" : "\"männlich\"", "Vorlieben" : [ "Reiten", "Schwimmen", "Lesen" ], "Alter" : null }, "Deckung" : 1e+6, "Währung" : "EUR" }
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 (Datenvolumen, Geschwindigkeit der Übertragung) sparsam eingesetzt werden sollen. Dies gilt im Besonderen bei der Entwicklung von desktopähnlichen Anwendungen.
Weblinks
- json.org Offizielle JSON-Seite
- Einführung in JSON Übersetzung der offiziellen Seite
- JSON und JSON-RPC: Ajax ohne XML Einführungstutorial der iX 01/2006
- Speeding Up AJAX with JSON Einführung in JSON, bei der die Unterschiede zu XML herausgearbeitet werden