JSON Format

Aus
Version vom 15. Dezember 2021, 09:14 Uhr von Fwf (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Die JavaScript Object Notation (JSON ) 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.

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 null dargestellt.
Boolescher Wert
wird durch die Schlüsselwörter true und false dargestellt. Dies sind keine Zeichenketten. Sie werden daher, wie null, nicht in Anführungszeichen gesetzt.
Zahl
ist eine Folge der Ziffern 09. Diese Folge kann durch ein negatives Vorzeichen - eingeleitet und durch einen Dezimalpunkt . unterbrochen sein. Die Zahl kann durch die Angabe eines Exponenten e oder E ergänzt werden, dem ein optionales Vorzeichen + oder - und eine Folge der Ziffern 09 folgt.
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, Infinity und -Infinity werden zu null serialisiert.
  • Date-Objekte werden in eine Zeichenkette konvertiert, die einer Datumsformatbeschreibung nach ISO-8601 genügt.
  • Function-, RegExp- und Error-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
 }
}