Movatterモバイル変換


[0]ホーム

URL:


Aller au contenu
Wikipédial'encyclopédie libre
Rechercher

JavaScript Object Notation

Un article de Wikipédia, l'encyclopédie libre.

Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.

Cet articlene cite pas suffisamment ses sources().

Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant lesréférences utiles à savérifiabilité et en les liant à la section « Notes et références ».

En pratique :Quelles sources sont attendues ?Comment ajouter mes sources ?
JSON
JavaScript Object Notation
logo du format JSON
Caractéristiques
Extension
.jsonVoir et modifier les données sur Wikidata
Type MIME
application/jsonVoir et modifier les données sur Wikidata
PUID
Développé par
Version initiale
2001
Type de format
Texte
Basé sur
Norme
RFC 8259 et ECMA-404
Spécification
Site web

modifier -modifier le code -modifier WikidataDocumentation du modèle

JavaScript Object Notation (JSON) est unformat de données textuel dérivé de la notation desobjets du langageJavaScript. Il concurrenceXML pour la représentation et la transmission d’information structurée[1].

Imaginé parDouglas Crockford, le format JSON a été introduit pour la première fois sur la page json.org en 2001[2]. Cette démarche a conduit à sa standardisation ultérieure sous la norme ECMA-404[2] d'Ecma International, publiée en octobre 2003[2]. Il est également décrit en 2017 par laRFC 8259[3] de l’Internet Engineering Task Force qui se veut compatible avec ECMA-404 et ECMA-404.

Desbibliothèques pour le format JSON existent dans de nombreuxlangages de programmation[4].

Caractéristiques

[modifier |modifier le code]

Un texte en JSON comprend[5],[4] :

  • deuxtypes composés :
  • quatretypes scalaires :
    • desbooléens : prend la valeurtrue oufalse,
    • desnombres : un nombre décimal signé qui peut contenir une part fractionnable ou élevée à la puissance. Le JSON n'admet pas les nombres inexistants (NaN), et ne distingue pas lesentiers et lesflottants,
    • deschaînes de caractères : une séquence de 0 ou plus caractèresUnicode. À l'instar des clés, elles sont obligatoirement entourées de guillemets,
    • la valeurnull : qualifie l'absence de valeur.

Chacun de ces types peut être utilisé pour constituer un document.

Exemple

[modifier |modifier le code]

Exemple de texte au format JSON :

{"menu":{"id":"file","value":"File","popup":{"menuitem":[{"value":"New","onclick":"CreateNewDoc()"},{"value":"Open","onclick":"OpenDoc()"},{"value":"Close","onclick":"CloseDoc()"}]}}}

Équivalent au formatXML :

<menuid="file"value="File"><popup><menuitemvalue="New"onclick="CreateNewDoc()"/><menuitemvalue="Open"onclick="OpenDoc()"/><menuitemvalue="Close"onclick="CloseDoc()"/></popup></menu>

Équivalent au formatYAML :

menu:id:filevalue:Filepopup:menuitem:-value:Newonclick:CreateNewDoc()-value:Openonclick:OpenDoc()-value:Closeonclick:CloseDoc()

Commentaires

[modifier |modifier le code]

JSON est un format d'échange de données dont la RFC n'admet pas lescommentaires, qui sont par nature desmétadonnées. Unanalyseur syntaxique JSON strict détecte une erreur s'il rencontre un caractère non prévu par la spécification.

Il existe des initiatives de formats étendant JSON pour ajouter des commentaires (comme Hjson[6] pourHuman JSON en anglais) et des logiciels permettant de restituer, à partir de ces formats dérivés, du JSON standard. Toutefois, ces fichiers, demandant alors une étape supplémentaire avant de pouvoir être lus par un interpréteur JSON standard, perdent légèrement en facilité d'interopérabilité.

On peut toujours ajouter une propriété à un champ dans un tableau associatif JSON, la nommer "_comment" (un usage qui se développe[Quand ?][réf. nécessaire]), et mettre un texte (le commentaire) dans le champ valeur :

{"_comment":"Imported from Wikidata 2015-05-27 10:13.","QID":"Q5502001","label":"Adèle","description":"late 18th century, early 19th century French brig"}

Durant la mise au point du format,Douglas Crockford constate que certains des premiers utilisateurs du JSON ajoutent des commentaires dans le but de donner des directives au parseur[7], à l'image des instructions#ifdef ou#define dupréprocesseur C. Il y voit un danger pour l'interopérabilité, une priorité du format, et décide de les retirer[7]. En 2012, il s'explique sur ce choix et reconnait être conscient de la tristesse des utilisateurs de ne pouvoir commenter ces fichiers[7].

Usages

[modifier |modifier le code]

Bien qu’utilisant une notationJavaScript, JSON est indépendant du langage de programmation (plusieurs dizaines de langages de programmation ont intégré JSON). JSON sert à faire communiquer des applications dans un environnement hétérogène. Il est notamment utilisé comme langage de transport de données parAJAX et lesservices Web. D’autres solutions sont possibles commeXML. Le typeMIMEapplication/json est utilisé pour le transmettre par le protocoleHTTP.

Un document JSON représente un tableau associatif, implémenté en JavaScript par la classeObject, d’où le nom de ce premier. Il est donc potentiellement plus facile à interpréter qu’unXML qui imposera le recours à des techniques souvent plus lourdes qu’un accès direct, telles que le parcours hiérarchique de l’arbreDOM représenté par le document entier.

Il peut aussi être utilisé pour :

La syntaxe utilisée par les modules disponibles dans différents langages de programmation peut varier. Par exemple, avec le modulejson de la bibliothèque standard de Python, il faudra adapter la syntaxe du langage Python qui diffère de celle utilisée par le format JSON :

  • Pour les chaînes de caractères, seuls les guillemets doubles sont acceptés.
  • Les booléens s'écrivent tout en minuscule (true etfalse).
  • L'objetNone est représenté parnull

Évaluation

[modifier |modifier le code]

EnJavaScript, il est simple d’évaluer une expression JSON pour la transformer enObject natif :

vardonnees=eval('('+donnees_json+')');

Cette méthode comporte toutefois des risques car la chaîne de caractèresdonnees_json peut contenir n’importe quel codeJavaScript. Il existe une méthode plus sûre qui consiste àanalyser la syntaxe de la chaîne de caractèresdonnees_json, seule solution disponible dans les autres langages de programmation, à l’exception dePython, la syntaxe de JSON correspondant à ses deux types principaux : les listes et les dictionnaires.

À partir de2009, les navigateurs commencent à intégrer un support natif du format JSON. Cela facilite sa manipulation, la sécurité (contre l’évaluation de scripts malveillants inclus dans une chaîne JSON), et la rapidité de traitement. Ainsi les navigateursFirefox 3.5,IE 8 ou encoreOpera 10.5 l’intègrent en natif[8].

Évaluer en JavaScript une expression JSON pour la transformer en Object se fait alors de la manière suivante :

vardonnees=JSON.parse(donnees_json);

Différentesbibliothèques javascript permettent de supporter des navigateurs plus anciens avec une syntaxe similaire.

Extensions du format

[modifier |modifier le code]

JSONP

[modifier |modifier le code]

JSONP ou JSON-P (pourJSON with padding, en français, « JSON avec formatage ») est une extension dans laquelle le nom de la fonction de retour est indiqué[9]. L’idée originale proviendrait du blog de Bob Ippolito en 2005[10] et est maintenant répandue dans les applicationsWeb 2.0, telle queGoogle’s toolkit Applications[11]. Des améliorations sont prévues pour y ajouter des arguments[12].

JSONP utilise des balises de scripts, les appels sont ouverts. Ainsi, JSONP peut être inapproprié pour transporter des informations confidentielles.

JSON5

[modifier |modifier le code]

JSON5 est une extension de la syntaxe du JSON, destiné à contourner les limitations de ce dernier.

Spécifications

[modifier |modifier le code]
  • Les noms des champs ne sont plus entre guillemets
  • Support des commentaires (sur une ou plusieurs lignes)
  • Les nombres peuvent être représentés au format hexadécimal, être précédés du signe positif (+), avoir pour valeur Infinity ou NaN
  • Espaces blancs supplémentaires autorisés
  • Les chaînes de caractères peuvent être contenus entre apostrophes

HJSON

[modifier |modifier le code]

HJSON est une extension de la syntaxe JSON, ayant le même objectif que JSON5 (voir ci-dessus).

Spécifications

[modifier |modifier le code]
  • Les champs peuvent être séparés par un retour à la ligne au lieu d'une virgule
  • Possibilité d'écrire des commentaires (#, //, /* ... */)
  • L'utilisation des guillemets pour encapsuler une chaîne de caractères n'est pas obligatoire
  • Les chaînes de caractères peuvent être écrites sur plusieurs lignes

Annexes

[modifier |modifier le code]

Sur les autres projets Wikimedia :

  • JSON, surWikimedia Commons
  • JSON,sur leWiktionnaire
  • JSON,surWikibooks

Articles connexes

[modifier |modifier le code]
  • BSON (Binary JSON) : un format étendant les possibilités du JSON (données temporelles, binaires, etc.), notamment utilisé parMongoDB ;
  • TopoJSON : un format de stockage des données topologiques ;
  • GeoJSON : un format de stockage des données géographiques ;
  • YAML : un autre langage de sérialisation de données.
  • JSON-LD : (pour JavaScript Object Notation for Link Data) est un standard duW3C pourstructurer des données sur le web en utilisant du JSON[13],[14].

Liens externes

[modifier |modifier le code]

Références

[modifier |modifier le code]
  1. « Structuration des donnees: XML et JSON », surwdi.supelec.fr(consulté le)
  2. ab etcECMA International,Standard ECMA-404 : The JSON DataInterchange Syntax, 114 Rue du Rhône, CH-1204 Geneva, ECMA International,,2e éd., 16 p.(lire en ligne),p. 1, 5
  3. (en) « RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format »,IETF Datatracker,‎(lire en ligne, consulté le)
  4. a etb« JSON », surwww.json.org(consulté le)
  5. Stéphane Crozat, Julien Jerphanion, Harold Carrel-Billiard, Maxime Uzan et Cécile Fecherolle, « JavaScript Object Notation [Introduction aux bases de données NoSQL] », surlibrecours.net(consulté le)
  6. (en) « Hjson, a user interface for JSON », surhjson.github.io(consulté le)
  7. ab etcDouglas Crockford,« Comments in JSON »(Archive.orgWikiwixArchive.isGoogleQue faire ?), surPublications du compte Google+ de Douglas Crockford,(consulté le)
  8. (en) « Can I use... JSON parsing », surcaniuse.com(consulté le)
  9. « Une requête inter-domaine à l'aide de JSONP », surwww.journaldunet.com(consulté le)
  10. (en) « Remote JSON - JSONP »,.
  11. (en) « GWT Tutorial: How to Read Web Services Client-Side with JSONP ».
  12. (en) « JSONPP »,.
  13. (en) W3C, « The JSON-LD Vocabulary »,
  14. (en) « Home - schema.org », surschema.org(consulté le)
v ·m
Formats lisibles
Formats binaires
v ·m
Analyse statique de programmes
Compilateur source à source
Concepts
Débogueur
Générateur de documentation
Éditeurs (comparaison (en))
Moteur
Framework
Technologie associée
Gestionnaire de paquets
Côté serveur
Test unitaire
Personnalité
Ce document provient de « https://fr.wikipedia.org/w/index.php?title=JavaScript_Object_Notation&oldid=230234802 ».
Catégories :
Catégories cachées :

[8]ページ先頭

©2009-2025 Movatter.jp