1. Introduction (Einführung)
JavaScript Object Notation (JSON) ist ein Textformat für die Serialisierung strukturierter Daten. Es leitet sich von den Objektliteralen von JavaScript ab, wie in der ECMAScript-Programmiersprachen-Standard, dritte Ausgabe [ECMA-262], definiert.
JSON kann vier primitive Typen (Zeichenketten, Zahlen, Boolesche Werte und null) und zwei strukturierte Typen (Objekte und Arrays) darstellen.
Eine Zeichenkette ist eine Sequenz von null oder mehr Unicode-Zeichen [UNICODE]. Beachten Sie, dass diese Referenz auf die neueste Version von Unicode und nicht auf eine bestimmte Version verweist. Es wird nicht erwartet, dass zukünftige Änderungen der Unicode-Spezifikation die Syntax von JSON beeinflussen.
Ein Objekt ist eine ungeordnete Sammlung von null oder mehr Name/Wert-Paaren, wobei ein Name eine Zeichenkette ist und ein Wert eine Zeichenkette, eine Zahl, ein Boolescher Wert, null, ein Objekt oder ein Array sein kann.
Ein Array ist eine geordnete Sequenz von null oder mehr Werten.
Die Begriffe „Objekt" und „Array" stammen aus den Konventionen von JavaScript.
Die Designziele von JSON waren, dass es minimal, portabel, textuell und eine Teilmenge von JavaScript ist.
1.1. Conventions Used in This Document (In diesem Dokument verwendete Konventionen)
Die Schlüsselwörter „MUST", „MUST NOT", „REQUIRED", „SHALL", „SHALL NOT", „SHOULD", „SHOULD NOT", „RECOMMENDED", „NOT RECOMMENDED", „MAY" und „OPTIONAL" in diesem Dokument sind wie in BCP 14 [RFC2119] [RFC8174] beschrieben zu interpretieren, wenn und nur wenn sie in Großbuchstaben erscheinen, wie hier gezeigt.
Die grammatischen Regeln in diesem Dokument sind wie in [RFC5234] beschrieben zu interpretieren.
1.2. Specifications of JSON (Spezifikationen von JSON)
Dieses Dokument ersetzt [RFC7159]. [RFC7159] hat [RFC4627] obsolet gemacht, das ursprünglich JSON beschrieb und den Medientyp „application/json" registrierte.
JSON wird auch in [ECMA-404] beschrieben.
Die Referenz auf ECMA-404 im vorherigen Satz ist normativ, nicht in dem üblichen Sinne, dass Implementierer sie konsultieren müssen, um dieses Dokument zu verstehen, sondern um zu betonen, dass es keine Inkonsistenzen in der Definition des Begriffs „JSON-Text" in einer seiner Spezifikationen gibt. Beachten Sie jedoch, dass ECMA-404 mehrere Praktiken erlaubt, die diese Spezifikation im Interesse maximaler Interoperabilität zu vermeiden empfiehlt.
Die Absicht ist, dass die Grammatik zwischen den beiden Dokumenten gleich ist, obwohl unterschiedliche Beschreibungen verwendet werden. Wenn ein Unterschied zwischen ihnen gefunden wird, werden ECMA und die IETF zusammenarbeiten, um beide Dokumente zu aktualisieren.
Wenn ein Fehler in einem der beiden Dokumente gefunden wird, sollte das andere untersucht werden, um zu sehen, ob es einen ähnlichen Fehler aufweist; wenn ja, sollte er nach Möglichkeit behoben werden.
Wenn eines der beiden Dokumente in Zukunft geändert wird, werden ECMA und die IETF zusammenarbeiten, um sicherzustellen, dass die beiden Dokumente während der Änderung aufeinander abgestimmt bleiben.
1.3. Introduction to This Revision (Einführung zu dieser Revision)
In den Jahren seit der Veröffentlichung von RFC 4627 hat JSON sehr breite Anwendung gefunden. Diese Erfahrung hat bestimmte Muster offenbart, die, obwohl von seinen Spezifikationen erlaubt, Interoperabilitätsprobleme verursacht haben.
Außerdem wurde eine kleine Anzahl von Errata bezüglich RFC 4627 (siehe RFC Errata IDs 607 [Err607] und 3607 [Err3607]) und bezüglich RFC 7159 (siehe RFC Errata IDs 3915 [Err3915], 4264 [Err4264], 4336 [Err4336] und 4388 [Err4388]) gemeldet.
Das Ziel dieses Dokuments ist es, diese Errata anzuwenden, Inkonsistenzen mit anderen Spezifikationen von JSON zu entfernen und Praktiken hervorzuheben, die zu Interoperabilitätsproblemen führen können.