JSON signifie JavaScript Object Notation. C’est un langage indépendant qui facilite l’échange de données, grâce à sa simplicité (facile à apprendre) et sa légèreté (un maximum de données/objet avec un minimum de texte).
Nous allons voir ci-dessous les spécificités de ce langage.
Pour un Web Analyst, ce langage peut être utile dans le cadre de la mise en place d’un Data Layer.
La structure du JSON
Le JSON permet de décrire l’information hiérarchiquement. Cette structure hiérarchique est composée d’objets et tableaux.
Un objet peut contenir d’autres objets ou des variables (avec une valeur associée). Alors qu’un tableau ne peut contenir qu’une liste d’éléments, ces éléments pouvant être des objets ou des valeurs. Dans un tableau, les éléments sont ordonnées (position dans le tableau), mais il n’y a pas de notion de paire unique variable-valeur (tous les éléments du tableau sont associés au tableau).
Les types de valeurs possibles sont du texte, des nombres, une valeur booléenne (true ou false) ou la valeur nulle (null).
Pour écrire un objet,
il faut décrire son contenu entre des accolades { }.
Pour écrire un tableau, son contenu doit être entre crochets [ ].
Pour écrire une variable, son nom doit être unique et entouré par des doubles guillemets » » et le signe double point : permet de lui associer une valeur (si la valeur correspond à du texte, il faut la mettre entre doubles guillemets » »).
Et la séparation entre des objets ou des éléments d’un tableau se fait avec une virgule.
Pour décrire de l’information correspondant à plusieurs dimensions, il faut faire en sorte que chaque dimension corresponde à un objet ou à un tableau.
Et pour définir des métadonnées (des données à propos de données), il s’agit de créer des attributs à l’aide de plusieurs variables dans le contenu de l’objet.
Exemple d’un objet décrit avec JSON
Ainsi, par exemple avec la structure ci-dessous,
on décrit l’objet MaVoiture en précisant sa marque, le nombre de portes, si elle a la climatisation ou non, les conducteurs qui la conduisent et les accidents qu’elle a eu.
On constate que pour l’information à propos des conducteurs, un tableau est utilisé. Il permet de faire la liste de tous les conducteurs possibles et a la particularité d’être extensible (possibilité de rajouter de nouveaux éléments, c’est à dire de nouveaux conducteurs). Alors que pour une variable, une seule valeur peut lui être associée.
Concernant les accidents de la voiture, un objet Accidents est présent dans l’objet MaVoiture. Et cet objet Accidents contient un tableau Rayures qui est une liste d’objets, chaque objet correspondant à une rayure unique avec les informations relatives (conducteur responsable de la rayure, emplacement de la rayure, année de la rayure).
{
''MaVoiture'': {
''Marque'': ''bmw'',
''Portes'' : 5,
''Climatisation'': true ,
''Conducteurs'': [''alain'',''bernard'',''cecile''],
''Accidents'': {
''Rayures'': [
{ ''Conducteur'': ''alain'', ''Emplacement'': ''porte arriere gauche'', ''Annee'' : ''2011'' },
{ ''Conducteur'': ''cecile'', ''Emplacement'': ''coffre'', ''Annee'' : ''2012'' }
]
}
}
}
En plus d’être léger, l’avantage du JSON est qu’il permet de connaitre rapidement avec Javascript les infos suivantes (le travail est facilité par la structure écrite avec le JSON) :
– la marque de la voiture = MaVoiture.Marque
– le nombre de conducteurs = MaVoiture.Conducteurs.length
– le nom du conducteur qui a fait la première rayure = MaVoiture.Accidents.Rayures[0].Conducteur
Concernant les tableaux et le JS,
Rayures[0] fait référence au premier élément du tableau, la numérotation commençant à 0.
Et pour rajouter un élément au tableau, c’est possible avec le code JS ci-dessous :
if(!MaVoiture.Accidents.Rayures){MaVoiture.Accidents.Rayures=[];}MaVoiture.Accidents.Rayures.push(‘nouvel élément’)
Nous allons voir l’équivalent du code ci-dessous en XML. Le code est plus verbeux (plus de texte, plus de caractères), ce qui alourdit la taille du code :
<MaVoiture Marque="bmw" Portes=5 Climatisation=true>
<Conducteurs>alain</Conducteurs>
<Conducteurs>bernard</Conducteurs>
<Conducteurs>cecile</Conducteurs>
<Accidents>
<Rayures Conducteur="alain" Emplacement="porte arriere gauche" Annee="2011" />
<Rayures Conducteur="cecile" Emplacement="coffre" Annee="2012" />
</Accidents>
</MaVoiture>
A noter : il est conseillé d’éviter les accents puisqu’ils peuvent être interprétés différemment selon le langage du serveur.
Pour + d’infos :
– Les Standards du JSON