1. Introduction
JavaScript Object Notation (JSON) est un format textuel pour la sérialisation de données structurées. Il dérive des littéraux d'objets 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, nombres, booléens et null) ainsi que deux types structurés (objets et tableaux).
Une chaîne est une séquence de zéro ou plusieurs caractères Unicode [UNICODE]. Notez que cette référence pointe vers la dernière version d'Unicode, et non vers une version spécifique. On s'attend à ce que les changements futurs de la spécification Unicode n'affectent pas 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 et une valeur peut être une chaîne, 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", "MAY" et "OPTIONAL" dans ce document doivent être interprétés comme décrit dans [RFC2119].
Les règles de grammaire dans ce document doivent être interprétées comme décrit dans [RFC5234].
1.2. Specifications of JSON (Spécifications de JSON)
Ce document met à jour [RFC4627], qui décrivait JSON et enregistrait le type de média "application/json".
Une description de JSON en termes ECMAScript apparaît dans la version 5.1 de la spécification ECMAScript [ECMA-262], section 15.12. JSON est également décrit dans [ECMA-404].
Toutes les spécifications grammaticales JSON sont d'accord sur les éléments syntaxiques du langage.
1.3. Introduction to This Revision (Introduction à cette révision)
Au cours des années écoulées depuis 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 les spécifications, ont conduit à des problèmes d'interopérabilité.
De plus, un petit nombre d'errata ont été signalés (voir les identifiants d'erratum RFC 607 [Err607] et 3607 [Err3607]).
L'objectif de ce document est d'appliquer ces errata, d'éliminer les incohérences avec d'autres spécifications JSON et de mettre en évidence les pratiques qui peuvent conduire à des problèmes d'interopérabilité.