Introduction
JSON (JavaScript Object Notation) est un format d’échange de données qui permet de représenter des structures de données et des objets simples.
Il s’agit d’un standard. Des implémentations pour la génération et l’interprétation sont donc disponibles dans tous les langages de programmation. La description des objets repose sur un système de couple "cle" : "valeur"
. Dans sa syntaxe, un JSON fait appel aux caractères suivants :
- { } > accolades, pour définir un objet
- [ ] > crochets, pour définir une liste
- : > deux points, pour associer une clé et sa valeur
- , > virgule, pour séparer deux éléments d’un objet ou d’une liste
Exemple de JSON :
{
"entrees": [
{
"nom": "Soupe au potiron",
"prix": 6
},
{
"nom": "Salade césar",
"prix": 7
},
{
"nom": "Carpaccio de bœuf",
"prix": 8
}
],
"plats": [
{
"nom": "Steak de soja",
"prix": 10
},
{
"nom": "Saucisse de Toulouse",
"prix": 11
},
{
"nom": "Magret de canard",
"prix": 12
}
],
"desserts": [
{
"nom": "Mousse au chocolat",
"prix": 6
},
{
"nom": "Tiramisu",
"prix": 7
},
{
"nom": "Moelleux au chocolat + boule de glace",
"prix": 8
}
]
}
Sur une carte de restaurant, le JSON pourrait être traduit ainsi :
Entrées :
- Soupe de potiron (6€)
- Salade césar (7€)
- Carpaccio de bœuf (8€)
Plats :
- Steak de soja (9€)
- Saucisse de Toulouse (10€)
- Magret de canard (11€)
Desserts :
- Mousse au chocolat (6€)
- Tiramisu (7€)
- Moelleux au chocolat + boule de glace (8€)
Voici les types disponibles pour les valeurs des éléments dans JSON :
- Chaîne de caractères (entre « « )
- Nombre
- Booléens (true / false)
- Valeur nulle (null)
- Tableau (entre [ ])
- Objet (entre { })
JSON ne spécifie pas de format spécifique pour les dates. Il est en revanche préférable d’utiliser le format donné par la méthode toJSON() de l’objet Date en JavaScript (format ISO8601).
Exemple : 2012-04-23T18:25:43.511Z
Dans un script, un objet JSON peut se construire de deux manières différentes :
1/ Directement « en ligne «
var js_monJsonCarteResto = {
entrees: [{
"nom": "Soupe au potiron",
"prix": 6
},
{
"nom": "Salade cesar",
"prix": 7
},
{
"nom": "Carpaccio de boeuf",
"prix": 8
}],
plats: [{
"nom": "Steak de soja",
"prix": 10
},
{
"nom": "Saucisse de Toulouse",
"prix": 11
},
{
"nom": "Magret de canard",
"prix": 12
}],
desserts: [{
"nom": "Mousse au chocolat",
"prix": 6
},
{
"nom": "Tiramisu",
"prix": 7
},
{
"nom": "Moelleux au chocolat + boule de glace",
"prix": 8
}]
};
2/ En utilisant les méthodes liste.push(element) pour insérer un élément dans une liste, et objet.cle(valeur) pour associer une clé et une valeur dans un objet.
var js_monJsonCarteResto = {};
var js_mesEntrees = [];
var js_mesPlats = [];
var js_mesDesserts = [];
js_mesEntrees.push({"nom": "Soupe au potiron","prix": 6});
js_mesEntrees.push({"nom": "Salade cesar","prix": 7});
js_mesEntrees.push({"nom": "Carpaccio de boeuf","prix": 8});
js_mesPlats.push({"nom": "Steak de soja","prix": 10});
js_mesPlats.push({"nom": "Saucisse de Toulouse","prix": 11});
js_mesPlats.push({"nom": "Magret de canard","prix": 12});
js_mesDesserts.push({"nom": "Mousse au chocolat","prix": 6});
js_mesDesserts.push({"nom": "Tiramisu","prix": 7});
js_mesDesserts.push({"nom": "Moelleux au chocolat + boule de glace","prix": 8});
js_monJsonCarteResto.mesEntrees = js_mesEntrees;
js_monJsonCarteResto.mesPlats = js_mesPlats;
js_monJsonCarteResto.mesDesserts = js_mesDesserts;
Utiliser du JSON dans un script Iterop
Les variables Iterop manipulent des chaînes de caractères et ne traitent pas directement des JSON.
Le type JSON n’existe pas dans les types de variables Iterop.
C’est donc la représentation de ce JSON en chaîne de caractères qui est stockée dans Iterop.
Aussi, pour pouvoir manipuler ces variables dans JavaScript, il est nécessaire d’utiliser des méthodes de sérialisation / désérialisation que nous proposent JavaScript :
- En début de script, on parse une chaîne de caractères pour la transformer en Objet JavaScript.
- En fin de script, on stringify l’Objet JavaScript pour l’enregistrer comme chaîne de caractère dans une variable Iterop.
JSON.stringify()
Cette méthode sert à construire une chaîne de caractère à partir d’un objet JSON.
io.set("creerCarteResto_maCarteResto", JSON.stringify(js_monJsonCarteResto));
JSON.parse()
Cette méthode sert à construire un Objet JavaScript à partir d’une chaîne de caractères.
var js_maCarteResto = JSON.parse(creerCarteResto_maCarteResto);
// js_maCarteResto est un JSON, on peut donc le parcourir comme ceci :
var js_soupeAuPoriton = js_maCarteResto.entrees[0].nom
Créer un JSON à partir de variables dans un processus Iterop
Vous aurez très certainement besoin d’intégrer des valeurs provenant de vos variables Iterop.
Voici un exemple montrant comment intégrer un nouveau plat dans la carte du restaurant en récupérant des valeurs provenant de variables Iterop :
var js_monJsonCarteResto = JSON.parse(creerCarteResto_maCarteResto);
var js_nouveauPlat = {};
js_nouveauPlat.nom = ajouterUnNouveauPlat_nomDuPlat;
js_nouveauPlat.prix = ajouterUnNouveauPlat_prixDuPlat;
js_monJsonCarteResto.mesPlats.push(js_nouveauPlat);
io.set("creerCarteResto_maCarteResto", JSON.stringify(js_monJsonCarteResto));