Vous êtes sur la page 1sur 22

JSON : UN FORMAT D’ÉCHANGE DE

DONNÉES
QU’EST CE QUE JSON

 Le JavaScript Object Notation (JSON) est un format d’échange de données léger.


 Il est utilisé pour représenter des structures de données et des objets simples dans
un code qui repose sur un navigateur web.
 JSON est une syntaxe pour sérialiser des objets, tableaux, nombres, chaînes de
caractères, booléens et valeurs null.
 basée sur la syntaxe de JavaScript mais en est distincte.

118
QU’EST CE QU’UN FICHIER JSON

 JSON est un format qui permet de stocker des informations structurées.


 Principalement utilisé pour transmettre les données d’une application web entre un
serveur virtuel hôte et un client.
 C’est une alternative simple et légère au langage de balisage extensif (XML):
 Difficulté de conversion de XML en un objet JavaScript (utilisation de plusieurs lignes de
code).
 Un analyseur JSON ne nécessite qu’une seule ligne de code pour convertir du texte en
JavaScript (syntaxe des deux est très similaire).
 JSON utilise l’analyse syntaxique côté serveur pour améliorer la réactivité.
 Aucune connaissance préalable de l’objet analysé n’est requise.
119
SYNTAXE DU JSON

 Principaux éléments de la syntaxe JSON :


 Les données sont présentées sous forme de paires clé/valeur.
 Les éléments de données sont séparés par des virgules.
 Les accolades {} désignent les objets.
 Les crochets [] désignent des tableaux.
 La syntaxe des littéraux d’objets JSON est de la forme :

{"key1":"value1","key2":"value2","key3":"value3"}
120
TYPES DE VALEURS EN JSON

 JSON dispose de :
 4 types primitifs : les nombres, les textes, les booléens, la valeur null ;
 2 types structurants : les objets et les tableaux.

121
TYPES DE VALEURS EN JSON…

 Les types primitifs :


 Nombre : Il peut être un nombre entier ou un nombre à virgule flottante.
 Booléen : Les booléens contiennent les valeurs vrai ou faux.
 Chaîne de caractères : Ce sont des séquences définies de zéro ou plusieurs caractères
Unicode, entourées de guillemets.
 Null : Null est une valeur vide. C’est pour montrer qu’il n’y a pas d’information.

122
TYPES DE VALEURS EN JSON…

 Les types structurants :


 Les tableaux : Un tableau est une collection ordonnée de valeurs. Une valeur de tableau
peut contenir des objets JSON, ce qui signifie qu’elle utilise le même concept de paire
clé/valeur.
 Les objets : Les objets sont délimités par des accolades {}. Les informations sont
identifiées par des propriétés. Ces dernières doivent être délimitées par des doubles
guillemets, suivis du symbole deux points “:” avant de laisser place à la valeur concrète.
 Les clés sont des chaînes de caractères – des séquences de caractères entourées de guillemets.
 Les valeurs sont des types de données JSON valides. Elles peuvent se présenter sous la forme
d’un tableau, d’un objet, d’une chaîne de caractères, d’un booléen, d’un nombre ou de null.

123
{
"reference" : "prod01",
TYPES "name":
DE VALEURS
"Monica EN JSON
Side : EXEMPLE
Wingback Chair, Pink",
"stockQte" : 20,
"unitPrice":200.500,
"image" :"images/pinkChair.png",
"category" : "Chairs",
"comments": [
{
"rating": 5,
"comment": "I think its great. Great value for the price",
"date": "2020-12-31"
},
{
"rating": 4,
"comment": "Its sturdy, color is great, and smaller like we wanted. ",
"date": "2021-09-25"
}
]
}
124
CONSIGNES POUR UTILISER JSON
 Un objet JSON est uniquement un format de données — il ne contient que des propriétés
mais pas de méthodes.
 La notation JSON nécessite l'usage des guillemets pour être valide utiliser des guillemets
et non les apostrophes autour des chaînes de caractères et des noms de propriétés.
 Une simple virgule ou un double point mal placé peut rendre votre fichier JSON invalide et
non fonctionnel (utiliser une application comme JSONLint pour valider le code JSON).
 Dans l'absolu, le JSON peut prendre la forme de n'importe quel type de données qui serait
valide pour être contenu dans du JSON et non juste des tableaux ou des objets. Ainsi, par
exemple, une simple chaîne de caractères ou un nombre serait un objet JSON valide.
 Contrairement au JavaScript dans lequel les propriétés (keys) non entourées de guillemets
peuvent être utilisées, en JSON, seules les chaînes de caractères entourées de guillemets
peuvent être utilisées en tant que propriétés.
125
JSON ET JAVASCRIPT

 Plusieurs langages proposent aujourd’hui des outils pour faire la passerelle entre le
langage en question et JSON.
 En JavaScript, on possède ainsi un objet JSON. L’objet JavaScript global JSON possède
deux méthodes pour interpréter du JSON et convertir des valeurs en JSON  les
méthodes parse() et stringify().
 La méthode parse() analyse une chaîne de caractères JSON et construit la valeur
JavaScript ou l’objet décrit par cette chaîne  JSON.parse()
 La méthode stringify() convertit une valeur JavaScript en chaîne JSON  JSON.stringify()

126
JSON ET JAVASCRIPT
<!DOCTYPE html>
<html>
<body>
<h3>Exemple utilisation de Json.stringify</h3>
<p id="prod"></p>
<script>
const product = {reference: "prod02", name: "Mainstays Wood Rectangle Coffee Table",
stockQte: 50,unitPrice: 120.750,};
const jsProd = JSON.stringify(product);
document.getElementById("prod").innerHTML = jsProd;
</script>
</body></html>

127
JSON ET JAVASCRIPT
<!DOCTYPE html>
<html>
<body>
<h3>Exemple utilisation de Json.stringify</h3>
<p id="prod"></p>
<script>
const jsProd = '{"reference" : "prod02","name": "Mainstays Wood Rectangle Coffee
Table","stockQte" : 50,"unitPrice":120.750}';
const product = JSON.parse(jsProd);
document.getElementById("prod").innerHTML = "Name:<b
style='color:red;'>"+product.name+"</b>";
</script>
</body></html>

128
JSON ET PHP

 En PHP, la fonction json_decode() permet de convertir une chaine JSON en un


tableau associatif
<?php
$str_json = '[{"reference" : "prod02","name": "Mainstays Wood Rectangle Coffee
Table","stockQte" : 50,"unitPrice":120.750}]';
$my_array = json_decode($str_json,true);
var_dump($my_array);
?>

129
JSON ET PHP

 En PHP, la fonction json_decode() permet de convertir une chaine JSON en un objet


PHP
<?php
$str_json = '{"reference" : "prod02","name": "Mainstays Wood Rectangle Coffee
Table","stockQte" : 50,"unitPrice":120.750}';
$my_object = json_decode($str_json, false);
var_dump($my_object);
?>

130
JSON ET PHP
 En PHP, la fonction json_encode() qui retourne une chaîne de caractères contenant la
représentation JSON de la valeur value. Si le paramètre est un tableau ou un objet, il sera
sérialisé de manière récursive.
<?php
$obj = new stdClass();
$obj->reference = "prod02";
$obj->name = "Mainstays Wood Rectangle Coffee Table";
$obj->stockQte = 50;
$obj->unitPrice = 120.750;
$json = json_encode($obj,JSON_FORCE_OBJECT);
var_dump($json);
?>

131
JSON ET PYTHON
 De JSON à PYTHON  De PYTHON à JSON
import json
import json
# un objet Python (dict):
# un objet JSON: x = {
x = '{"reference" : "prod02","name": "reference": "prod02",
"Mainstays Wood Rectangle Coffee Table", "name": "Mainstays Wood
"stockQte" : 50,"unitPrice":120.750}' Rectangle Coffee Table",
"stockQte": 50,
# parse x: "unitPrice": 120.750,
y = json.loads(x) }

# Le résultat est un dictionnaire Python : # Conversion en JSON:


print(y["unitPrice"]) y = json.dumps(x)

# Résultat de la chaine JSON:


print(y) 132
JSON VS XML : LES DIFFÉRENCES
 JSON est un format d'échange de données standard ouvert basé sur le texte
cependant XML est un langage de balisage qui définit la structure de tout fichier XML
dans une structure arborescente.
 JSON est léger et facile à lire mais ne fournit pas d'informations sur les schémas ou les
types. Il est idéal pour le partage de données entre plusieurs applications.
 XML peut être utilisé pour partager des informations structurées entre programmes et
documents.
 JSON peut être utilisé avec des fichiers JavaScript ou en texte clair, alors que XML ne
peut être stocké que dans un fichier texte.
 JSON utilise moins de mémoire que XML  JSON un format idéal pour traiter rapidement
de grandes quantités de données.
133
JSON VS XML : LES DIFFÉRENCES…

 JSON a gagné en popularité en tant que support de stockage pour les applications Web en
raison de sa simplicité. En revanche, XML reste le choix privilégié pour la transmission de
données structurées sur le Web.
 Dans JSON, seuls les types de données suivants sont pris en charge : chaîne de caractères,
nombre, booléen et null. Par contre, en XML, de nombreux autres types, comme la date et
l'heure, peuvent être utilisés pour décrire les données.
 Il n'existe aucune règle sur ce qui peut être utilisé comme valeur ou comme nom d'attribut
dans JSON.

134
JSON VS XML : SIMILITUDES

 JSON et XML sont tous deux des formats autodescriptifs: Les formats autodescriptifs
ont été conçus pour être lisibles par l'homme, inscriptibles par l'homme, lisibles par
la machine et inscriptibles par la machine.
 JSON et XML offrent tous deux un bon support pour la définition et la validation du
contenu.
 JSON et XML peuvent être utilisés pour la sérialisation des données (conversion
d'une structure de données en un format de stockage ou de transmission). Cela
signifie que vous pouvez les utiliser pour transmettre des informations d'une
application ou d'un système à un autre via un canal de communication tel que HTTP
ou SOAP (protocole d'accès simple aux objets).
135
JSON VS XML : SIMILITUDES…

 JSON et XML sont basées sur du texte. C'est pourquoi beaucoup pensent que JSON a
été créé pour être une alternative plus simple à XML.
 Les deux formats ont des structures hiérarchiques où chaque champ a son nom et sa
valeur séparés par des virgules.

136
JSON

{
"reference" : "prod01",
TYPES "name":
DE VALEURS
"Monica EN JSON
Side : EXEMPLE
Wingback Chair, Pink",
"stockQte" : 20,
"unitPrice":200.500,
"image" :"images/pinkChair.png",
"category" : "Chairs",
"comments": [
{
"rating": 5,
"comment": "I think its great. Great value for the price",
"date": "2020-12-31"
},
{
"rating": 4,
"comment": "Its sturdy, color is great, and smaller like we wanted. ",
"date": "2021-09-25"
}
]
}
137
XML

<product>
<refrence>prod01</refrence>
TYPES<name>Monica
DE VALEURS ENWingback
Side JSON :Chair,
EXEMPLE
Pink</name>
<stockQte>20</stockQte>
<unitPrice>200.500</unitPrice>
<image>images/pinkChair.png</image>
<category>Chairs</category>
<comments>
<item>
<rating>5</rating>
<comment>I think its great. Great value for the price</comment>
<date>2020-12-31</date>
</item>
<item>
<rating>4</rating>
<comment>Its sturdy, color is great, and smaller like we wanted.</comment>
<date>2021-09-25</date>
</item>
</comments>
</product>
138

Vous aimerez peut-être aussi