1. Introduction
JavaScript Object Notation (JSON) est un format textuel pour la sérialisation de données structurées. Il est dérivé des littéraux d'objets de JavaScript, tels que définis dans la norme du langage de programmation ECMAScript, troisième édition [ECMA-262].
JSON peut représenter quatre types primitifs (chaînes de caractères, nombres, booléens et null) et deux types structurés (objets et tableaux).
Une chaîne de caractères est une séquence de zéro ou plusieurs caractères Unicode [UNICODE]. Notez que cette référence fait référence à la dernière version d'Unicode plutôt qu'à une version spécifique. Il n'est pas prévu que les modifications futures de la spécification Unicode affectent la syntaxe de JSON.
Un objet est une collection non ordonnée de zéro ou plusieurs paires nom/valeur, où un nom est une chaîne de caractères et une valeur est une chaîne de caractères, un nombre, un booléen, null, un objet ou un tableau.
Un tableau est une séquence ordonnée de zéro ou plusieurs valeurs.
Les termes « objet » et « tableau » proviennent des conventions de JavaScript.
Les objectifs de conception de JSON étaient d'être minimal, portable, textuel et un sous-ensemble de JavaScript.
1.1. Conventions Used in This Document (Conventions utilisées dans ce document)
Les mots-clés « MUST », « MUST NOT », « REQUIRED », « SHALL », « SHALL NOT », « SHOULD », « SHOULD NOT », « RECOMMENDED », « NOT RECOMMENDED », « MAY » et « OPTIONAL » dans ce document doivent être interprétés comme décrit dans BCP 14 [RFC2119] [RFC8174] lorsque, et seulement lorsque, ils apparaissent en majuscules, comme indiqué ici.
Les règles grammaticales de ce document doivent être interprétées comme décrit dans [RFC5234].
1.2. Specifications of JSON (Spécifications de JSON)
Ce document remplace [RFC7159]. [RFC7159] a rendu obsolète [RFC4627], qui décrivait à l'origine JSON et enregistrait le type de média « application/json ».
JSON est également décrit dans [ECMA-404].
La référence à ECMA-404 dans la phrase précédente est normative, non pas avec le sens habituel que les implémenteurs doivent la consulter pour comprendre ce document, mais pour souligner qu'il n'y a pas d'incohérences dans la définition du terme « texte JSON » dans l'une de ses spécifications. Notez cependant qu'ECMA-404 autorise plusieurs pratiques que cette spécification recommande d'éviter dans l'intérêt d'une interopérabilité maximale.
L'intention est que la grammaire soit la même entre les deux documents, bien que différentes descriptions soient utilisées. Si une différence est trouvée entre eux, ECMA et l'IETF travailleront ensemble pour mettre à jour les deux documents.
Si une erreur est trouvée dans l'un des documents, l'autre devrait être examiné pour voir s'il présente une erreur similaire ; si c'est le cas, elle devrait être corrigée, si possible.
Si l'un ou l'autre document est modifié à l'avenir, ECMA et l'IETF travailleront ensemble pour s'assurer que les deux documents restent alignés tout au long du changement.
1.3. Introduction to This Revision (Introduction à cette révision)
Dans les années qui ont suivi la publication de RFC 4627, JSON a connu une utilisation très large. Cette expérience a révélé certains modèles qui, bien qu'autorisés par ses spécifications, ont causé des problèmes d'interopérabilité.
De plus, un petit nombre d'errata ont été signalés concernant RFC 4627 (voir les ID d'errata RFC 607 [Err607] et 3607 [Err3607]) et concernant RFC 7159 (voir les ID d'errata RFC 3915 [Err3915], 4264 [Err4264], 4336 [Err4336] et 4388 [Err4388]).
L'objectif de ce document est d'appliquer ces errata, de supprimer les incohérences avec d'autres spécifications de JSON et de mettre en évidence les pratiques qui peuvent entraîner des problèmes d'interopérabilité.