JSON
Cette fiche expose le format de données JSON inventé par Douglas Crockford en 2001. JSON signifie JavaScript Object Notation car sa syntaxe est héritée du langage de programmation JavaScript. Elle est un sous-ensemble du langage YAML.
Parfois, vous devez sauvegarder vos données en mémoire vive sur le disque dur ou bien les envoyer à un programme distant. Pour cela il faut sérialiser vos données, c'est-à-dire les écrire dans un format qui permet leur sauvegarde ou leur transmission. JSON est un tel format. C'est un format texte lisible par l'humain, très simple : ses spécifications sont courtes et claires.
Création : le 10 avril 2017 | Dernière mise-à-jour : le 25 septembre 2018
Auteur : Damien Gouteux | Type : Fiche | Sujet : JSON, donnée, langage, modélisation, informatique
Sommaire
Liens
JSON
- Site officiel de JSON.
- JSON Lint, un site pour valider syntaxiquement ses documents JSON.
- Gérer JSON en…
- JSON dans la documentation officielle de Python.
- JSON dans la documentation officielle de Ruby.
- Liste de modules pour gérer le format JSON en Lua.
JSON Schema
- JSON Schema, pour valider ses documents JSON par rapport à un métamodèle.
- JSON Schema Core, ce document décrit le noyau de JSON Schema,
- JSON Schema Validation, ce document décrit les contraintes disponibles sur les données.
- Understanding JSON Schema, un livre électronique expliquant JSON Schema.
- JSON Schema Validator, pour valider des données contre un schéma.
Description
On peut diviser les 6 types de données en 2 :
- Les types atomiques1 de données :
- Number (entiers et réels) :
1.2 23
, - String
"bonjour"
, - Boolean
true false
, - et la valeur
null
.
- Number (entiers et réels) :
- Les types composés1 de données :
- Object
{ "clé" : value, ... }
, - Array
[ val1, ...]
.
- Object
1: atomiques et composés sont des termes personnels.
Remarques :
- La clé ne peut être que de type
String
, pas de nombres, pas d'identifiant. - JSON est un sous-ensemble du langage YAML, plus particulièrement de sa syntaxe compacte.
- JSON est un sous-ensemble de JavaScript.
- Pas de guillemet simple
'
pour encadrer les chaînes de caractères seulement le double"
. - Les chaînes de caractères doivent être en Unicode, plus précisément, encodées en UTF-8.
- Pas de virgule
,
après l'élément final d'un Object ou d'une Array. - On ne peut pas faire de commentaires en JSON.
Textes de référence
JSON est défini dans les documents suivants :
- ECMA-404 : Standard ECMA 404
- RFC 8259 : Dernière spécification en date
- RFC 7493 : I-JSON recommandé par Tim Bray*
- RFC 7159 : obsolète
- RFC 7158 : obsolète
- RFC 4627 : obsolète
* Tim Bray a édité les différentes RFC après avoir travaillé sur XML. Il fait des commentaires très utiles dans son blog personnel :
- The Last JSON Spec : quelle spécification prendre
- JSON Redux AKA RFC7159 : histoire de la standardisation
- Fixing JSON : des points à réparer dans la spécification actuelle, notamment sur la virgule
- Specifying JSON : sur la nécessité de spécifier
Exemple
{ "type" : "Voiture", "marque" : "Hyundai", "modèle" : "Getz", "annéeConstruction" : 2005, "nomConducteurs" : [ "Damien", "Charles", "Gustave" ], "madeInEurope" : false }
Autres formats
Il existe d'autres formats qui remplisse les mêmes fonctions que JSON :
- YAML : JSON est un sous-ensemble du langage YAML qui est beaucoup plus riche,
- Langage EDN : langage basé sur le langage de programmation Clojure,
- JSON5 : extension de JSON,
- HJSON : extension de JSON,
- Transit : un autre format de sérialisation d'objet,
- MessagePack : un autre format de sérialisation d'objet,
- Apache Avro : un autre format de sérialisation de données.
- JSON LD : format pour décrire des données liées utilisant JSON devenu une recommandation du W3C.