JSON (JavaScript Object Notation) est un format léger utilisé pour l'échange de données. Il est basé sur un sous-ensemble de langage JavaScript (la façon dont les objets sont construits en JavaScript). Comme indiqué dans le MDN , certains JavaScript n'est pas JSON, et certains JSON n'est pas JavaScript.
Un exemple d'utilisation est les réponses des services Web. Autrefois, les services Web utilisaient XML comme principal format de données pour transmettre les données en retour, mais depuis que JSON est apparu ( le format JSON est spécifié dans la RFC 4627 par Douglas Crockford ), il a été le format préféré car il est beaucoup plus poids léger
Vous pouvez trouver beaucoup plus d'informations sur le site Web officiel de JSON .
JSON est construit sur deux structures:
- Une collection de paires nom / valeur. Dans diverses langues, cela est réalisé sous la forme d'un objet, d'un enregistrement, d'une structure, d'un dictionnaire, d'une table de hachage, d'une liste à clés ou d'un tableau associatif.
- Une liste ordonnée de valeurs. Dans la plupart des langues, cela est réalisé sous la forme d'un tableau, d'un vecteur, d'une liste ou d'une séquence.
Structure JSON
Voici un exemple de données JSON:
{
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
"212 555-1234",
"646 555-4567"
]
}
JSON en JavaScript
JSON (en Javascript) est une chaîne!
Les gens supposent souvent que tous les objets Javascript sont JSON et que JSON est un objet Javascript. Ceci est une erreur.
En Javascript ce var x = {x:y}
n'est pas JSON , c'est un objet Javascript . Les deux ne sont pas la même chose. L'équivalent JSON (représenté dans le langage Javascript) serait var x = '{"x":"y"}'
. x
est un objet de type chaîne non un objet à part entière. Pour en faire un objet Javascript à part entière, vous devez d'abord l'analyser var x = JSON.parse('{"x":"y"}');
, x
c'est maintenant un objet mais ce n'est plus du JSON.
Voir objet Javascript Vs JSON
Lorsque vous travaillez avec JSON et JavaScript, vous pouvez être tenté d'utiliser le eval
fonction pour évaluer le résultat renvoyé dans le rappel, mais cela n'est pas suggéré car il y a deux caractères (U + 2028 & U + 2029) valides en JSON mais pas en JavaScript (en savoir plus ici ).
Par conséquent, il faut toujours essayer d'utiliser le script de Crockford qui recherche un JSON valide avant de l'évaluer. Un lien vers l'explication du script se trouve ici et voici un lien direct vers le fichier js. De nos jours, tous les principaux navigateurs ont sa propre implémentation pour cela.
Exemple d'utilisation de l'analyseur JSON (avec le json de l'extrait de code ci-dessus):
//The callback function that will be executed once data is received from the server
var callback = function (result) {
var johnny = JSON.parse(result);
//Now, the variable 'johnny' is an object that contains all of the properties
//from the above code snippet (the json example)
alert(johnny.firstName + ' ' + johnny.lastName); //Will alert 'John Smith'
};
L'analyseur JSON propose également une autre méthode très utile, stringify
. Cette méthode accepte un objet JavaScript comme paramètre et renvoie une chaîne au format JSON. Ceci est utile lorsque vous souhaitez renvoyer des données au serveur:
var anObject = {name: "Andreas", surname : "Grech", age : 20};
var jsonFormat = JSON.stringify(anObject);
//The above method will output this: {"name":"Andreas","surname":"Grech","age":20}
Les deux méthodes ci-dessus ( parse
et stringify
) prennent également un deuxième paramètre, qui est une fonction qui sera appelée pour chaque clé et valeur à chaque niveau du résultat final, et chaque valeur sera remplacée par le résultat de votre fonction entrée. (Plus à ce sujet ici )
Btw, pour tous ceux qui pensent que JSON est juste pour JavaScript, consultez cet article qui explique et confirme le contraire.
Références