Si je convertis l'objet ci-dessus en JSON en utilisant var jSonString = JSON.stringify(testObject);
, quelle est la différence entre les 2 (obj JS et JSON)?
JSON est un format d'échange de données. C'est une norme qui décrit comment les listes ordonnées et les cartes non ordonnées, les chaînes booléennes et les nombres peuvent être représentés dans une chaîne. Tout comme XML et YAML est un moyen de transmettre des informations structurées entre les langues, JSON est le même. En revanche, un objet JavaScript est un type physique. Tout comme un tableau PHP, une classe / structure C ++, un objet JavaScript est un type interne à JavaScript.
Voici une histoire. Imaginons que vous ayez acheté des meubles dans un magasin et que vous souhaitiez les faire livrer. Cependant, le seul modèle en stock est le modèle d'affichage, mais vous acceptez de l'acheter.
Dans la boutique, la commode que vous avez achetée est un objet vivant:
var chestOfDrawers = {
color: "red",
numberOfDrawers: 4
}
Cependant, vous ne pouvez pas envoyer de commode par la poste, vous devez donc la démonter (lire, la stringifier). C'est désormais inutile en termes de mobilier. C'est maintenant JSON. C'est sous forme de pack plat.
{"color":"red","numberOfDrawers":4}
Lorsque vous le recevez, vous reconstruisez ensuite la commode (lisez-la, analysez-la). Il est maintenant de retour sous forme d'objet.
La raison derrière JSON / XML et YAML est de permettre le transfert de données entre les langages de programmation dans un format que les deux langages participants peuvent comprendre; vous ne pouvez pas donner directement à PHP ou C ++ votre objet JavaScript; parce que chaque langue représente un objet différemment sous le capot. Cependant, parce que nous avons stratifié l'objet en notation JSON; c'est-à-dire une manière standardisée de représenter les données, nous pouvons transmettre la représentation JSON de l'objet à une autre langue (C ++, PHP), ils peuvent recréer l'objet JavaScript que nous avions dans leur propre objet basé sur la représentation JSON de l'objet.
Il est important de noter que JSON ne peut pas représenter des fonctions ou des dates. Si vous essayez de stringifier un objet avec un membre de fonction, la fonction sera omise de la représentation JSON. Une date sera convertie en chaîne;
JSON.stringify({
foo: new Date(),
blah: function () {
alert('hello');
}
}); // returns the string "{"foo":"2011-11-28T10:21:33.939Z"}"