JSON

JSON ( JavaScript Object Notation , prononcé / ˈ dʒ eɪ s ən / ; également / ˈ dʒ eɪ ˌ s ɒ n / ) est un format de fichier standard ouvert et un format d’échange de données qui utilise du texte lisible par l’homme pour stocker et transmettre des objets de données constitués de paires et tableaux attribut-valeur (ou autres valeurs sérialisables ). Il s’agit d’un format de données commun avec diverses utilisations dans l’échange de données électroniques , y compris celui deapplications Web avec serveurs .

Notation d’objet JavaScript
Extension de nom de fichier .json
Type de média Internet application/json
Tapez le code TEXTE
Identificateur de type uniforme (UTI) public.json
Type de format Échange de données
Prolongé de Javascript
Standard STD 90 ( RFC 8259 ), ECMA-404 , ISO/CEI 21778:2017
Format ouvert ? Oui
Site Internet json .org

JSON est un format de données indépendant du langage . Il est dérivé de JavaScript , mais de nombreux Langages de programmation modernes incluent du code pour générer et analyser des données au format JSON. Les noms de fichiers JSON utilisent l’extension .json.

Douglas Crockford a initialement spécifié le format JSON au début des années 2000. [1] Lui et Chip Morningstar ont envoyé le premier message JSON en avril 2001. [2]

Dénomination et prononciation

L’acronyme est né chez State Software, une société cofondée par Douglas Crockford et d’autres en mars 2001.

La norme internationale de 2017 (ECMA-404 et ISO/IEC 21778:2017) spécifie « Prononcé / ˈ dʒ eɪ . s ə n / , as in ‘ Jason and The Argonauts ‘ ». [3] [4] La première édition (2013) de l’ECMA-404 n’abordait pas la prononciation. [5] Le manuel d’administration système UNIX et Linux indique que ” Douglas Crockford , qui a nommé et promu le format JSON, dit qu’il se prononce comme le nom Jason. Mais d’une manière ou d’une autre, “JAY-sawn” semble être devenu plus courant dans la communauté technique .” [6]Crockford a déclaré en 2011: “Il y a beaucoup de discussions sur la façon dont vous prononcez cela, mais je m’en fiche strictement.” [7]

Normes

Après que la RFC 4627 ait été disponible en tant que spécification “informative” depuis 2006, JSON a été normalisé pour la première fois en 2013, sous le nom ECMA -404. [8] La RFC 8259 , publiée en 2017, est la version actuelle de la norme Internet STD 90 , et elle reste cohérente avec ECMA-404. [9] Cette même année, JSON a également été normalisé en tant qu’ISO / IEC 21778:2017. [3] Les normes ECMA et ISO ne décrivent que la syntaxe autorisée, tandis que la RFC couvre certaines considérations de sécurité et d’interopérabilité. [dix]

Histoire

Douglas Crockford au bâtiment Yahoo (2007)

JSON est né du besoin d’un protocole de communication serveur-navigateur en temps réel et sans état, sans utiliser de plug-ins de navigateur tels que les applets Flash ou Java , les méthodes dominantes utilisées au début des années 2000. [11]

Un précurseur des bibliothèques JSON a été utilisé dans un projet de jeu d’échange d’actifs numériques pour enfants nommé Cartoon Orbit sur Communities.com (auquel les cofondateurs de State Software avaient tous travaillé auparavant) pour Cartoon Network, qui utilisait un plug-in côté navigateur avec un format de messagerie propriétaire pour manipuler les éléments Dynamic HTML (ce système appartient également à 3DO). Lors de la découverte des premières capacités Ajax , digiGroups, Noosh et d’autres ont utilisé des cadres pour transmettre des informations dans le champ visuel des navigateurs de l’utilisateur sans rafraîchir le contexte visuel d’une application Web, réalisant des applications Web riches en temps réel en utilisant uniquement les capacités standard HTTP, HTML et JavaScript. de Netscape 4.0.5+ et IE 5+. [ citation nécessaire ]

Crockford a d’abord spécifié et popularisé le format JSON. [12] Les co-fondateurs de State Software ont convenu de construire un système qui utilisait des fonctionnalités de navigateur standard et fournissait une couche d’abstraction aux développeurs Web pour créer des applications Web avec état qui avaient une connexion duplex persistante à un serveur Web en détenant deux protocoles de transfert hypertexte (HTTP ) les connexions s’ouvrent et les recyclent avant les délais d’expiration standard du navigateur si aucune autre donnée n’a été échangée. Les co-fondateurs ont eu une table ronde et ont voté pour appeler le format de données JSML (JavaScript Markup Language) ou JSON (JavaScript Object Notation), ainsi que sous quel type de licence le rendre disponible. Puce Morningstara développé l’idée du State Application Framework chez State Software. [13] [14]

Le système a été vendu à Sun Microsystems , Amazon.com et EDS . Le site JSON.org [15] a été lancé en 2002. En décembre 2005, Yahoo! a commencé à proposer certains de ses services Web en JSON. [16]

JSON était basé sur un sous- ensemble du langage de script JavaScript (en particulier, la norme ECMA -262 3e édition – décembre 1999 [17] ) et est couramment utilisé avec JavaScript, mais il s’agit d’un format de données indépendant du langage . Le code d’ analyse et de génération de données JSON est facilement disponible dans de nombreux Langages de programmation . Le site Web de JSON répertorie les bibliothèques JSON par langage.

En octobre 2013, Ecma International a publié la première édition de sa norme JSON ECMA-404. [8] Cette même année, la RFC 7158 utilise ECMA-404 comme référence. En 2014, la RFC 7159 est devenue la principale référence pour les usages Internet de JSON, remplaçant la RFC 4627 et la RFC 7158 (mais en conservant ECMA-262 et ECMA-404 comme références principales). En novembre 2017, l’ ISO/IEC JTC 1/SC 22 a publié l’ISO/IEC 21778:2017 [3] en tant que norme internationale. Le 13 décembre 2017, l’ Internet Engineering Task Force a rendu RFC obsolète 7159 lors de la publication de la RFC 8259 , qui est la version actuelle de la norme Internet STD 90. [18] [19]

Crockford a ajouté une clause à la licence JSON indiquant que “le logiciel doit être utilisé pour le bien, pas le mal”, afin d’ ouvrir les bibliothèques JSON tout en se moquant des avocats d’entreprise et de ceux qui sont trop pédants. D’autre part, cette clause a entraîné des problèmes de compatibilité de licence de la licence JSON avec d’autres licences open-source , car les logiciels open-source et les logiciels libres n’impliquent généralement aucune restriction sur la finalité d’utilisation. [20]

Syntaxe

L’exemple suivant montre une représentation JSON possible décrivant une personne.

{ “firstName” : “John” , “lastName” : “Smith” , “isAlive” : true , “age” : 27 , “address” : { “streetAddress” : “21 2nd Street” , “city” : “Nouveau York” , “state” : “NY” , “postalCode” : “10021-3100” }, “phoneNumbers” : [ { “type” : “domicile” , “numéro” : “212 555-1234” }, { “type” : “office” , “number” : “646 555-4567” } ], “children” : [], “spouse” : null }

Encodage de caractère

Bien que Crockford ait initialement affirmé et cru que JSON est un sous-ensemble strict de JavaScript et d’ECMAScript, [21] sa spécification autorise en fait des documents JSON valides qui ne sont pas du JavaScript valide ; JSON permet aux terminateurs de ligne Unicode U+2028 LINE SEPARATOR et U+2029 PARAGRAPH SEPARATOR d’apparaître sans échappement dans les chaînes entre guillemets, contrairement à ECMAScript 2018 et versions antérieures. [22] [23] Ceci est une conséquence du fait que JSON n’autorise que les “caractères de contrôle”. Pour une portabilité maximale, ces caractères doivent être protégés par une barre oblique inverse.

L’échange JSON dans un écosystème ouvert doit être encodé en UTF-8 . [9] Le codage prend en charge le jeu de caractères Unicode complet, y compris les caractères en dehors du plan multilingue de base (U+10000 à U+10FFFF). Cependant, s’ils sont échappés, ces caractères doivent être écrits en utilisant des paires de substitution UTF-16 . Par exemple, pour inclure le caractère Emoji U+1F610 VISAGE NEUTRE dans JSON :

{ “visage” : ” ” } // ou { “visage” : “uD83DuDE10” }

JSON est devenu un sous-ensemble strict d’ECMAScript à partir de la révision 2019 du langage. [23] [24]

Types de données

Les types de données de base de JSON sont :

  • Nombre : un nombre décimal signé qui peut contenir une partie fractionnaire et peut utiliser la Notation E exponentielle , mais ne peut pas inclure de non-nombres tels que NaN . Le format ne fait aucune distinction entre entier et virgule flottante. JavaScript utilise le format à virgule flottante double précision IEEE-754 pour toutes ses valeurs numériques (jusqu’à plus tard, il prend également en charge BigInt [25] ), mais d’autres langages implémentant JSON peuvent coder les nombres différemment.
  • String : une séquence de zéro ou plusieurs caractères Unicode . Les chaînes sont délimitées par des guillemets doubles et prennent en charge une syntaxe d’ échappement par barre oblique inverse.
  • Booléen : l’une des valeurs trueoufalse
  • Array : une liste ordonnée de zéro ou plusieurs éléments, chacun pouvant être de n’importe quel type. Les tableaux utilisent la notation entre crochets avec des éléments séparés par des virgules.
  • Objet : une collection de paires nom-valeur où les noms (également appelés clés) sont des chaînes. La norme ECMA actuelle stipule : “La syntaxe JSON n’impose aucune restriction sur les chaînes utilisées comme noms, n’exige pas que les chaînes de nom soient uniques et n’attribue aucune signification à l’ordre des paires nom/valeur.” [26] Les objets sont délimités par des accolades et utilisent des virgules pour séparer chaque paire, tandis qu’à l’intérieur de chaque paire, le caractère deux-points ‘:’ sépare la clé ou le nom de sa valeur.
  • null: une valeur vide, utilisant le motnull

Les espaces blancs sont autorisés et ignorés autour ou entre les éléments syntaxiques (valeurs et ponctuation, mais pas dans une valeur de chaîne). Quatre caractères spécifiques sont considérés comme des espaces blancs à cette fin : espace , tabulation horizontale , Saut de ligne et retour chariot . En particulier, la marque d’ordre des octets ne doit pas être générée par une implémentation conforme (bien qu’elle puisse être acceptée lors de l’analyse de JSON). JSON ne fournit pas de syntaxe pour les commentaires . [27]

Les premières versions de JSON (telles que spécifiées par la RFC 4627 ) exigeaient qu’un texte JSON valide se compose uniquement d’un objet ou d’un type de tableau, pouvant contenir d’autres types. Cette restriction a été abandonnée dans RFC 7158 , où un texte JSON a été redéfini comme n’importe quelle valeur sérialisée.

Les nombres dans JSON sont agnostiques en ce qui concerne leur représentation dans les Langages de programmation. Bien que cela permette de sérialiser des nombres de précision arbitraire , cela peut entraîner des problèmes de portabilité. Par exemple, étant donné qu’aucune différenciation n’est faite entre les valeurs entières et à virgule flottante, certaines implémentations peuvent traiter 42, 42.0et 4.2E+1comme le même nombre, tandis que d’autres non. La norme JSON ne fait aucune exigence concernant les détails d’implémentation tels que le débordement , le sous-dépassement , la perte de précision, l’arrondi ou les Zéros signés , mais il recommande de ne pas attendre plus que le binaire IEEE 75464précision pour une “bonne interopérabilité”. Il n’y a pas de perte de précision inhérente à la sérialisation d’une représentation binaire au niveau machine d’un nombre à virgule flottante (comme binary64) en une représentation décimale lisible par l’homme (comme les nombres dans JSON), et inversement, car il existe des algorithmes publiés pour le faire exactement et de manière optimale. [28]

Les commentaires ont été intentionnellement exclus de JSON. En 2012, Douglas Crockford a décrit sa décision de conception ainsi : “J’ai supprimé les commentaires de JSON parce que j’ai vu que les gens les utilisaient pour contenir des directives d’analyse, une pratique qui aurait détruit l’interopérabilité.” [27]

JSON interdit les “virgules de fin”, une virgule après la dernière valeur à l’intérieur d’une structure de données. [29] Les virgules de fin sont une caractéristique commune des dérivés JSON pour améliorer la facilité d’utilisation. [30]

Sémantique

Alors que JSON fournit un cadre syntaxique pour l’échange de données, un échange de données sans ambiguïté nécessite également un accord entre le producteur et le consommateur sur la sémantique de l’utilisation spécifique de la syntaxe JSON. [31] Un exemple de cas où un tel accord est nécessaire est la sérialisation de types de données définis par la syntaxe JavaScript qui ne font pas partie de la norme JSON, par exemple, Date, Function, Regular Expression et undefined. [32]

Métadonnées et schéma

Le Type MIME officiel pour le texte JSON est ” application/json”, [33] et la plupart des implémentations modernes l’ont adopté. Le Type MIME non officiel ” text/json” ou le type de contenu ” text/javascript” sont également pris en charge pour des raisons héritées par de nombreux fournisseurs de services, navigateurs, serveurs, applications Web, bibliothèques, frameworks et API. Les exemples notables incluent l’API de recherche Google, [34] Yahoo!, [34] [35] Flickr, [34] l’ API Facebook, [36] le framework Lift , [37] et Dojo Toolkit 0.4. [38]

JSON Schema spécifie un format basé sur JSON pour définir la structure des données JSON pour la validation, la documentation et le contrôle des interactions. Il fournit un contrat pour les données JSON requises par une application donnée, et comment ces données peuvent être modifiées. [39] JSON Schema est basé sur les concepts de XML Schema (XSD), mais est basé sur JSON. Comme dans XSD, les mêmes outils de sérialisation/désérialisation peuvent être utilisés à la fois pour le schéma et les données, et il est auto-descriptif. Il est spécifié dans un projet Internet de l’IETF, actuellement en projet 2020-12, qui a été publié le 28 janvier 2021. [40] Il existe plusieurs validateurs disponibles pour différents Langages de programmation, [41]chacun avec différents niveaux de conformité. Il n’y a pas d’extension de nom de fichier standard. [ citation nécessaire ]

La norme JSON ne prend pas en charge les références d’objets , mais il existe un projet de norme IETF pour les références d’objets basées sur JSON. [42]

Les usages

JSON-RPC est un protocole d’appel de procédure à distance (RPC) basé sur JSON, en remplacement de XML-RPC ou SOAP . Il s’agit d’un protocole simple qui ne définit qu’une poignée de types de données et de commandes. JSON-RPC permet à un système d’envoyer des notifications (informations au serveur qui ne nécessitent pas de réponse) et plusieurs appels au serveur auxquels il peut être répondu dans le désordre.

JavaScript asynchrone et JSON (ou AJAJ) font référence à la même méthodologie de page Web dynamique qu’Ajax , mais au lieu de XML , JSON est le format de données. AJAJ est une technique de développement Web qui permet à une page Web de demander de nouvelles données après son chargement dans le navigateur Web . En règle générale, il affiche de nouvelles données à partir du serveur en réponse aux actions de l’utilisateur sur cette page Web. Par exemple, ce que l’utilisateur saisit dans une zone de recherche , le code côté client l’ envoie ensuite au serveur, qui répond immédiatement avec une liste déroulante d’éléments de base de données correspondants .

Bien que JSON soit un format de sérialisation de données, il a été utilisé ad hoc comme langage de configuration . Dans ce cas d’utilisation, la prise en charge des commentaires et d’autres fonctionnalités a été jugée utile, ce qui a conduit à la création de plusieurs surensembles JSON non standard . Parmi eux se trouvent HJSON, [43] HOCON et JSON5 (qui malgré son nom, n’est pas la cinquième version de JSON). [44] [45] L’objectif principal de la version 1.2 de YAML était de faire du format non standard un sur-ensemble JSON strict. [46]

En 2012, Douglas Crockford avait ceci à dire à propos des commentaires dans JSON lorsqu’il est utilisé comme langage de configuration : “Je sais que le manque de commentaires rend certaines personnes tristes, mais cela ne devrait pas. Supposons que vous utilisiez JSON pour conserver les fichiers de configuration, ce qui vous souhaitez annoter. Allez-y et insérez tous les commentaires que vous souhaitez. Ensuite, faites-le passer par JSMin [47] avant de le transmettre à votre analyseur JSON. [27]

JSON est conçu comme un format de sérialisation de données . Cependant, sa conception en tant que sous-ensemble de JavaScript peut conduire à l’idée fausse qu’il est sûr de transmettre des textes JSON à la fonction JavaScript. Ce n’est pas sûr, en raison de certains textes JSON valides, en particulier ceux contenant U+2028 LINE SEPARATOR ou U+2029 PARAGRAPH SEPARATOR , n’étant pas un code JavaScript valide jusqu’à ce que les spécifications JavaScript soient mises à jour en 2019, et donc les moteurs plus anciens peuvent ne pas le prendre en charge. [48] ​​Pour éviter les nombreux pièges causés par l’exécution de code arbitraire à partir d’Internet, une nouvelle fonction a d’abord été ajoutée à la cinquième édition d’ECMAScript, [49]eval() JSON.parse()qui à partir de 2017 est pris en charge par tous les principaux navigateurs. Pour les navigateurs non pris en charge, une bibliothèque JavaScript compatible API est fournie par Douglas Crockford . [50] De plus, la proposition TC39 “Subsume JSON” a fait d’ ECMAScript un sur-ensemble JSON strict à partir de la révision 2019 du langage. [23] [24]

Diverses implémentations d’analyseurs JSON ont souffert d’ attaques par déni de service et d’une vulnérabilité d’affectation de masse . [51] [52]

MongoDB utilise des données de type JSON pour sa base de données orientée document .

Comparaison avec d’autres formats

JSON est promu comme une alternative à faible coût au XML car ces deux formats ont un support étendu pour la création, la lecture et le décodage dans les situations réelles où ils sont couramment utilisés. [53] Outre XML, les exemples pourraient inclure CSV et YAML (un sur-ensemble de JSON). De plus, Google Protocol Buffers peut remplir ce rôle, bien qu’il ne s’agisse pas d’un langage d’échange de données.

YAML

YAML version 1.2 est un sur-ensemble de JSON ; les versions antérieures n’étaient pas strictement compatibles. Par exemple, échapper une barre oblique /avec une barre oblique inverse est valide dans JSON, mais n’était pas valide dans YAML. [46] YAML prend en charge les commentaires, contrairement à JSON. [46] [44] [27]

XML

XML a été utilisé pour décrire des données structurées et sérialiser des objets. Divers protocoles basés sur XML existent pour représenter le même type de structures de données que JSON pour le même type d’échange de données. Les données peuvent être encodées en XML de plusieurs manières. La forme la plus étendue utilisant des paires de balises donne une représentation beaucoup plus grande (en nombre de caractères) que JSON, mais si les données sont stockées dans des attributs et une forme de “balise courte” où la balise de fermeture est remplacée par />, la représentation est souvent à peu près la même taille comme JSON ou juste un peu plus grand. Cependant, un attribut XML ne peut avoir qu’une seule valeur et chaque attribut peut apparaître au plus une fois sur chaque élément.

XML sépare les “données” des “métadonnées” (via l’utilisation d’éléments et d’attributs), alors que JSON n’a pas un tel concept.

Une autre différence clé est l’adressage des valeurs. JSON a des objets avec un simple mappage “clé” à “valeur”, alors que dans XML, l’adressage se produit sur des “nœuds”, qui reçoivent tous un identifiant unique via le processeur XML. De plus, la norme XML définit un attribut commun xml:id, qui peut être utilisé par l’utilisateur, pour définir explicitement un ID.

Les noms de balises XML ne peuvent contenir aucun des caractères !”#$%&'()*+,/;<=>?@[]^`{|}~, ni un espace, et ne peuvent pas commencer par -, .ou un chiffre numérique, contrairement aux clés JSON (même si les guillemets et la barre oblique inverse doivent être échappés). [54]

Les valeurs XML sont des chaînes de caractères , sans sécurité de type intégrée . XML a le concept de schéma , qui permet un typage fort, des types définis par l’utilisateur, des balises prédéfinies et une structure formelle, permettant la validation formelle d’un flux XML. JSON a plusieurs types intégrés et a un concept de schéma similaire dans JSON Schema .

XML prend en charge les commentaires, contrairement à JSON. [55] [27]

Dérivés

Plusieurs formats de sérialisation ont été construits sur ou à partir de la spécification JSON. Les exemples incluent GeoJSON , JSON-LD , Smile (format d’échange de données) , UBJSON , JSON-RPC , JsonML , JSON→URL , [56] Lottie , [57] et CUE [ désambiguïsation nécessaire ] . [58]

Voir également

  • Comparaison des formats de sérialisation des données
  • Amazon Ion – un sur-ensemble de JSON
  • Jackson (API)
  • Diffusion JSON
  • Expression S

Références

  1. ^ “Douglas Crockford : La Saga JSON” . Youtube. 28 août 2011 . Consulté le 21 février 2022 .
  2. ^ “Un regard approfondi sur JSON vs XML, Partie 1 : L’histoire de chacun” . Toptal Ingénierie Blog . Consulté le 31 décembre 2021 .
  3. ^ un bcISO / CEI 21778: 2017 . ISO . Consulté le 29 juillet 2019 .
  4. ^ “Norme ECMA-404 – La syntaxe d’échange de données JSON” (PDF) . Ecma International. Décembre 2017. p. 1, note de bas de page . Consulté le 27 octobre 2019 .
  5. ^ ECMA-404 : Le format d’échange de données JSON (PDF) (1ère éd.). Genève : ECMA International. Octobre 2013.
  6. ^ Németh, Evi; Snyder, Garth; Hein, Trent R.; Whaley, Ben ; Mackin, Dan (2017). “19 : Hébergement Web” . Manuel d’administration système UNIX et Linux (5e éd.). Addison-Wesley Professionnel. ISBN 9780134278292. Consulté le 29 octobre 2019 .
  7. ^ “Douglas Crockford: La Saga JSON – Transcription Vids” . transcriptvids.com . Consulté le 29 octobre 2019 .
  8. ^ un b “Le format d’échange de données JSON” (PDF) . ECMA International. octobre 2013 . Consulté le 24 octobre 2019 .
  9. ^ un b “Le format d’échange de données JavaScript Object Notation (JSON)” . IETF. décembre 2017 . Consulté le 16 février 2018 .
  10. ^ Bray, Tim. “JSON Redux AKA RFC7159” . En cours . Consulté le 16 mars 2014 .
  11. ^ “Histoire non officielle de Java” . Edu4Java . 26 mai 2014. Archivé de l’original le 26 mai 2014 . Récupéré le 30 août 2019 . En 1996, Macromedia lance la technologie Flash qui occupe la place laissée par Java et ActiveX, devenant de facto le standard de l’animation côté client.
  12. ^ “Douglas Crockford – La saga JSON” . Youtube. 28 août 2011 . Consulté le 23 septembre 2016 .
  13. ^ “Biographie de Chip Morningstar” . nd
  14. ^ “Le logiciel d’état franchit la barrière du développement d’applications Web” . Washingtonindependant.com . 2013.
  15. ^ “JSON” . json.org .
  16. ^ Yahoo !. “Utilisation de JSON avec les services Web Yahoo!” . Archivé de l’original le 11 octobre 2007 . Consulté le 3 juillet 2009 .
  17. ^ Crockford, Douglas (28 mai 2009). “Présentation de JSON” . json.org . Consulté le 3 juillet 2009 . Il est basé sur un sous-ensemble du langage de programmation JavaScript, norme ECMA-262 3e édition – décembre 1999.
  18. ^ “Histoire de draft-IETF-jsonbis-rfc7159bis-04″ . Traqueur de données IETF . Groupe de travail sur l’ingénierie Internet . Consulté le 24 octobre 2019 . 2017-12-13 […] RFC publié
  19. ^ “RFC 8259 – Le format d’échange de données JavaScript Object Notation (JSON)” . Traqueur de données IETF . Groupe de travail sur l’ingénierie Internet . Consulté le 24 octobre 2019 . Type : RFC – Norme Internet (décembre 2017 ; errata) ; RFC 7159 obsolète ; Aussi connu sous STD 90
  20. ^ Apache et la licence JSON sur LWN.net par Jake Edge (30 novembre 2016)
  21. ^ Douglas Crockford (10 juillet 2016). “JSON en Javascript” . Archivé de l’original le 10 juillet 2016 . Consulté le 13 août 2016 . JSON est un sous-ensemble de la notation littérale d’objet de JavaScript.
  22. ^ Holm, Magnus (15 mai 2011). “JSON : le sous-ensemble JavaScript qui ne l’est pas” . Le référentiel intemporel. Archivé de l’original le 13 mai 2012 . Consulté le 23 septembre 2016 .
  23. ^ un bc ” Subsume JSON : Proposition de rendre tout le texte JSON valide ECMA-262″ . Ecma TC39. 23 août 2019 . Consulté le 27 août 2019 .
  24. ^ un b “Avancez à l’Étape 4 – tc39/proposal-json-superset” . GitHub . 22 mai 2018.
  25. ^ “BigInt – Glossaire de la documentation Web MDN” . Mozilla . Consulté le 18 octobre 2020 .
  26. ^ La syntaxe d’échange de données JSON (PDF) (2e éd.). Ecma International . Décembre 2017. p. 3. La syntaxe JSON n’impose aucune restriction sur les chaînes utilisées comme noms, n’exige pas que les chaînes de nom soient uniques et n’attribue aucune signification à l’ordre des paires nom/valeur. {{cite book}}: Maint CS1 : date et année ( lien )
  27. ^ un bcde Crockford , Douglas (30 avril 2012). “Commentaires en JSON” . Archivé de l’original le 4 juillet 2015 . Consulté le 30 août 2019 . J’ai supprimé les commentaires de JSON parce que j’ai vu que les gens les utilisaient pour contenir des directives d’analyse, une pratique qui aurait détruit l’interopérabilité. Je sais que le manque de commentaires rend certaines personnes tristes, mais cela ne devrait pas. Supposons que vous utilisez JSON pour conserver les fichiers de configuration que vous souhaitez annoter. Allez-y et insérez tous les commentaires que vous aimez. Ensuite, dirigez-le via JSMin avant de le transmettre à votre analyseur JSON.
  28. ^ Andrysco, Marc; Jhala, Ranjit ; Lerner, Sorin. “Impression de nombres à virgule flottante – Une méthode toujours correcte” (PDF) . Consulté le 27 juillet 2019 .
  29. ^ La syntaxe d’échange de données JSON (PDF) (2e éd.). Ecma International . Décembre 2017. p. 11. Un jeton de virgule unique sépare une valeur d’un nom suivant. {{cite book}}: Maint CS1 : date et année ( lien )
  30. ^ “JSON5” . json5. Archivé de l’original le 29 novembre 2020 . Consulté le 16 décembre 2020 .
  31. ^ “La syntaxe d’échange de données JSON” (PDF) . Ecma International. décembre 2017 . Consulté le 27 octobre 2019 . La syntaxe JSON n’est pas une spécification d’un échange de données complet. Un échange de données significatif nécessite un accord entre un producteur et un consommateur sur la sémantique attachée à une utilisation particulière de la syntaxe JSON. Ce que JSON fournit est le cadre syntaxique auquel une telle sémantique peut être attachée
  32. ^ “Spécification du langage ECMAScript 2019” (PDF) . Ecma International. Juin 2019. Archivé de l’original (PDF) le 12 avril 2015 . Consulté le 27 octobre 2019 .
  33. ^ “Types de médias” . iana.org . Consulté le 13 septembre 2015 .
  34. ^ un bc “Gérer l’application/json & text/json par benschwarz · Pull Request #2 · mislav/faraday-stack . GitHub . Consulté le 13 septembre 2015 .
  35. ^ “Yahoo !, JavaScript et JSON” . Web programmable . 16 décembre 2005 . Consulté le 13 septembre 2015 .
  36. ^ “Faire en sorte que les requêtes JSON autorisent le contenu texte/javascript par jakeboxer · Pull Request #148 · AFNetworking/AFNetworking” . GitHub . Consulté le 13 septembre 2015 .
  37. ^ “lift/Req.scala at master · lift/lift · GitHub” . GitHub . Consulté le 13 septembre 2015 .
  38. ^ “BrowserIO.js dans legacy/branches/0.4/src/io – Dojo Toolkit” . dojotoolkit.org . Archivé de l’original le 10 janvier 2016 . Consulté le 13 septembre 2015 .
  39. ^ “Schéma JSON et Hyper-Schéma” . json-schema.org . Consulté le 8 juin 2021 .
  40. ^ “draft-handrews-json-schema-00 – Schéma JSON : Un type de support pour décrire les documents JSON” . json-schema.org/ . 28 janvier 2021 . Consulté le 8 juin 2021 .
  41. ^ “Implémentations de schéma JSON” . json-schema.org . Consulté le 8 juin 2021 .
  42. ^ Zyp, Kris (16 septembre 2012). Bryan, Paul C. (éd.). “Référence JSON : brouillon-pbryan-zyp-json-ref-03” . Groupe de travail sur l’ingénierie Internet .
  43. ^ Edelman, Jason; Lowe, Scott ; Oswalt, Mat. Programmabilité et automatisation du réseau . O’Reilly Media . pour la représentation des données, vous pouvez choisir l’un des éléments suivants : YAML, YAMLEX, JSON, JSON5, HJSON ou même Python pur
  44. ^ un b McCombs, Thayne. “Pourquoi JSON n’est pas un bon langage de configuration” . Graphique lucide . Consulté le 15 juin 2019 .
  45. ^ “HOCON (notation d’objet de configuration optimisée pour l’homme)” . GitHub . 28 janvier 2019 . Consulté le 28 août 2019 . L’objectif principal est : conserver la sémantique (arborescence ; ensemble de types ; encodage/échappement) de JSON, mais le rendre plus pratique en tant que format de fichier de configuration modifiable par l’homme.
  46. ^ un bc « YAML n’est pas le langage de balisage (YAML TM) Version 1.2 » . yaml.org . Consulté le 13 septembre 2015 .
  47. ^ Crockford, Douglas (16 mai 2019). “JSMin” . Consulté le 12 août 2020 . JSMin [2001] est un outil de minification qui supprime les commentaires et les espaces inutiles des fichiers JavaScript.
  48. ^ “JSON : Le sous-ensemble JavaScript qui n’est pas” . Magnus Holm. Archivé de l’original le 13 mai 2012 . Consulté le 16 mai 2011 .
  49. ^ “ECMAScript cinquième édition” (PDF) . Archivé de l’original (PDF) le 14 avril 2011 . Consulté le 18 mars 2011 .
  50. ^ “douglascrockford/JSON-js” . GitHub . 13 août 2019.
  51. ^ “Déni de service et vulnérabilité de création d’objets non sécurisés dans JSON (CVE-2013-0269)” . Consulté le 5 janvier 2016 .
  52. ^ “Microsoft .NET Framework JSON Content Processing Denial of Service Vulnerability” . Consulté le 5 janvier 2016 .
  53. ^ “JSON : l’alternative sans graisse à XML” . json.org . Récupéré le 14 mars 2011 .
  54. ^ “Spécification XML 1.1” . Consortium World Wide Web . Consulté le 26 août 2019 .
  55. ^ Saternos, Casimir (2014). Applications Web client-serveur avec Javascript et Java . p. 45. ISBN 9781449369316.
  56. ^ “Spécification JSON → URL” . En cours . Consulté le 9 avril 2021 .
  57. ^ “Qu’est-ce qu’une animation Lottie ? – LottieFiles” . lottiefiles.com . Consulté le 11 janvier 2022 .
  58. ^ https://cuelang.org/docs/integrations/json/

Liens externes

JSONdans les projets frères de Wikipédia

  • Définitions du Wiktionnaire
  • Médias de Commons
  • Manuels de Wikibooks
  • Site officiel
  • “Format d’échange de données ECMA-404 JSON” (PDF) . ECMA Int’l.
  • STD 90 , format d’échange de données JSON
Consultédonnéesdonnées JSONDouglas CrockfordJson
Comments (0)
Add Comment