JSON ou "JavaScript Object Notation"
JSON désigne un format de données permettant de stocker de l'information de manière organisée. Il a l'avantage d'être facilement lisible par un être humain, et permet un accès rapide aux données qu'il contient.
Il est souvent utilisé pour décrire des structures de type objet.
C'est un standard qui a été spécifié par Douglas Crockford.
Origines de la syntaxe de JSON
Son acronyme signifiant “JavaScript Object Notation” indique clairement d'où sa syntaxe provient : le langage JavaScript. En effet la syntaxe de JSON reprend la syntaxe de création d'objets en JavaScript.
Attention:JSON est Indépendant de tout langage
Bien que JSON puise sa syntaxe du JavaScript, il est indépendant de tout langage de programmation. Il peut ainsi être interprété par tout langage à l'aide d'un parseur.
Extension
Un fichier au format JSON a pour extension “.json”.
Syntaxe
Un fichier JSON simple
{ "nom" : "Norris", "prenom" : "Chuck", "age" : "73", "etat" : "Oklahoma" }
Règles syntaxiques
- Il ne doit exister qu'un seul élément père par document contenant tous les autres : un élément racine.
- Tout fichier JSON bien formé doit être soit un objet (commençant par “{” et se terminant par “}” ), soit un tableau (commençant par “[” et terminant par “]” ). Cependant ils peuvent être vides, ainsi “[]” et “{}” sont des JSON valides.
- Les séparateurs utilisés entre deux paires/valeurs sont des virgules.
- Un objet JSON peut contenir d'autres objets JSON.
- Il ne peut y avoir d'éléments croisés.
Éléments du format JSON
Il existe deux types d'éléments :
- Des couples de type “nom”: valeur, comme l'on peut en trouver dans les tableaux associatifs.
- Des listes de valeurs, comme les tableaux utilisés en programmation.
Valeurs possibles
- Primitifs : nombre, booléen, chaîne de caractères, null.
- Tableaux : Liste de valeurs (tableaux et objets aussi autorisés) entrées entre crochets, séparées par des virgules.
- Objets : Listes de couples “nom”: valeur (tableaux et objets aussi autorisés) entrés entre accolades, séparés par des virgules.
Exemple:Une structure JSON plus complexe
{ "nom cours" : "NF29", "theme" : "ingenierie documentaire", "etudiants" : [ { "nom" : "Norris", "prenom" : "Chuck", "age" : "73", "pays" : "USA" }, { "nom" : "Doe", "prenom" : "Jane", "age" : "45", "pays" : "Angleterre" }, { "nom" : "Ourson", "prenom" : "Winnie", "age" : "10", "pays" : "France" } ] }
Principaux usages de JSON
Chargements asynchrones
Avec la montée en flèche des chargements asynchrones tels que l'AJAX (Asynchronous JavaScript And XML) dans le web actuel (qui ne provoquent pas le rechargement total de la page), il est devenu de plus en plus important de pouvoir charger des données organisées, de manière rapide et efficace.
Le format JSON s'est montré adapté à ce type de besoins car il est léger, et indépendant des langages qui l'utilisent : sa seule fonction est de décrire des données, qui sont ensuite utilisées différemment pour chaque cas suivant le contexte.
Exemple: En savoir plus sur l'AJAX
Les APIs
Des sociétés telles que Twitter, Facebook ou LinkedIn, offrent essentiellement des services basés sur l'échange d'informations, et font preuve d'un intérêt grandissant envers les moyens possibles pour distribuer ces données à des tiers.
Alors qu'il n'y a pas de domination totale d'un des deux formats (JSON ou XML) dans le domaine des APIs, on constate toutefois que JSON est en train de prendre le pas là où le format XML avait été pionnier : ce dernier est encore le plus utilisé, mais le JSON se démocratise très rapidement dans ce domaine.
Exemple: APIs retournant des données au format JSON
- Twitter : https://dev.twitter.com/rest/public : récupération de données du réseau social.
- Netatmo : https://dev.netatmo.com/doc/publicapi : récupération de données météo
Les bases de données
Le JSON s'illustre également dans le domaine des bases de données. Actuellement, il n'y a pas de format “favori” pour ce type d'usage, mais dans une catégorie bien spécifique, le JSON se développe tout particulièrement : il s'agit des bases de données de type “NoSQL”.
Une base de données de type “NoSQL” est conçue pour proposer une très bonne capacité d'évolutivité, et pour gérer des données qui ne se conforment pas forcément au modèle en colonnes/relationnel tel qu'on le connaît dans les bases de données classiques. Ce type de BDD est également profondément orienté web.
Les plus connues sont MongoDB, CouchDB, et Riak : Ces trois exemples sont basés sur un stockage de données au format JSON.
On notera également qu'il est possible de soumettre des requêtes à MySQL, et de récupérer une réponse en JSON. Il en est de même pour Postgres, et d'autres bases de données “en colonnes”. De tels systèmes n'ont pas été construits en considérant le JSON comme leur brique de base, mais tendent vers une adaptation à ce format.
Exemple: Fonctions JSON de Postgres et MySQL
- Fonctons PostgreSQL : http://www.postgresql.org/docs/9.3/static/functions-json.html
- Fonctions MySQL : https://dev.mysql.com/doc/refman/5.7/en/json.html