slam:donneestructurees:le_format_json_1

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.

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.

Un fichier au format JSON a pour extension “.json”.

Un fichier JSON simple

{
   "nom" : "Norris",
   "prenom" : "Chuck",
   "age" : "73",
   "etat" : "Oklahoma"
}
  1. Il ne doit exister qu'un seul élément père par document contenant tous les autres : un élément racine.
  2. 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.
  3. Les séparateurs utilisés entre deux paires/valeurs sont des virgules.
  4. Un objet JSON peut contenir d'autres objets JSON.
  5. Il ne peut y avoir d'éléments croisés.

Il existe deux types d'éléments :

  1. Des couples de type “nom”: valeur, comme l'on peut en trouver dans les tableaux associatifs.
  2. Des listes de valeurs, comme les tableaux utilisés en programmation.
  1. Primitifs : nombre, booléen, chaîne de caractères, null.
  2. Tableaux : Liste de valeurs (tableaux et objets aussi autorisés) entrées entre crochets, séparées par des virgules.
  3. Objets : Listes de couples “nom”: valeur (tableaux et objets aussi autorisés) entrés entre accolades, séparés par des virgules.
{
   "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"
                }
              ]
}

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

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

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

  • slam/donneestructurees/le_format_json_1.txt
  • Dernière modification : 2024/12/20 11:11
  • de dthevenot