JSON Format
Die JavaScript Object Notation (JSON [[[:Vorlage:IPA]]]) ist ein kompaktes Datenformat in einer einfach lesbaren Textform für den Datenaustausch zwischen Anwendungen. JSON ist von der Programmiersprache unabhängig. Parser und Generatoren existieren in allen verbreiteten Sprachen.
Inhaltsverzeichnis
Einsatzgebiete
JSON wird zur Übertragung und zum Speichern strukturierter Daten eingesetzt. Es dient als Datenformat bei der Datenübertragung (Serialisierung). Insbesondere bei Webanwendungen und mobilen Apps wird es in Verbindung mit JavaScript, Ajax oder WebSockets zum Übertragen von Daten zwischen dem Client und dem Server häufig genutzt.
Datenstruktur und Formatdefinition
Zeichencodierung und Datentypen
Die Daten können beliebig verschachtelt werden, beispielsweise ist eine indizierte Liste (englisch "array") von Objekten möglich, welche wiederum arrays oder Objekte enthalten. Als Zeichenkodierung benutzt JSON standardmäßig UTF-8. Auch UTF-16 und UTF-32 sind möglich.
JSON kennt die folgenden Typen von Elementen.
- Nullwert
- wird durch das Schlüsselwort
nulldargestellt. - Boolescher Wert
- wird durch die Schlüsselwörter
trueundfalsedargestellt. Dies sind keine Zeichenketten. Sie werden daher, wienull, nicht in Anführungszeichen gesetzt. - Zahl
- ist eine Folge der Ziffern
0–9. Diese Folge kann durch ein negatives Vorzeichen-eingeleitet und durch einen Dezimalpunkt.unterbrochen sein. Die Zahl kann durch die Angabe eines ExponenteneoderEergänzt werden, dem ein optionales Vorzeichen+oder-und eine Folge der Ziffern0–9folgt. - Zeichenkette
- beginnt und endet mit doppelten geraden Anführungszeichen (
"). Sie kann Unicode-Zeichen und durch\eingeleitete Escape-Sequenzen enthalten. - Array
- beginnt mit
[und endet mit]. Es enthält eine durch Kommata geteilte, indizierte Liste von Elementen gleichen oder verschiedenen Typs. Leere Arrays sind zulässig.
- Objekt
- beginnt mit
{und endet mit}. Es enthält eine durch Kommata geteilte, ungeordnete Liste von Eigenschaften. Objekte ohne Eigenschaften („leere Objekte“) sind zulässig.- Eigenschaft
- besteht aus einem Schlüssel und einem Wert, getrennt durch einen Doppelpunkt (
Schlüssel : Wert). Die Schlüssel sollten eindeutig sein, da unterschiedliche Parser mit mehrfach vorkommenden Schlüsseln unterschiedlich umgehen. Während ECMA-404 keine Eindeutigkeit voraussetzt, fordert RFC 7159, dass Schlüssel innerhalb eines Objekts eindeutig sind.- der Schlüssel ist eine Zeichenkette.
- der Wert ist ein beliebiges Element.
Nicht signifikante Leerraum-Zeichen sind verwendbar.<ref>Vorlage:RFC-Internet</ref>
Einschränkungen
JSON unterstützt nicht alle von JavaScript unterstützten Datentypen. Bei nicht unterstützten Datentypen wird folgendermaßen serialisiert:
NaN,Infinityund-Infinitywerden zunullserialisiert.Date-Objekte werden in eine Zeichenkette konvertiert, die einer Datumsformatbeschreibung nach ISO-8601 genügt.Function-,RegExp- undError-Objekte werden verworfen.
Beispiel
{
"Herausgeber": "Xema",
"Nummer": "1234-5678-9012-3456",
"Deckung": 2e+6,
"Waehrung": "EURO",
"Inhaber":
{
"Name": "Mustermann",
"Vorname": "Max",
"maennlich": true,
"Hobbys": ["Reiten", "Golfen", "Lesen"],
"Alter": 42,
"Kinder": [],
"Partner": null
}
}