Question Qu'est-ce que JSON et pourquoi l'utiliser?


J'ai regardé sur wikipédia et googlé et lu la documentation officielle, mais je n'ai pas encore atteint le point où je comprends vraiment ce que JSON est, et pourquoi je l'utiliserais.

Je construis des applications utilisant PHP, MySQL et Javascript / HTML depuis un moment, et si JSON peut faire quelque chose pour me simplifier la vie ou améliorer mon code ou améliorer mon interface utilisateur, alors j'aimerais bien le savoir. Quelqu'un peut-il me donner une explication succincte?


477
2017-12-20 20:19


origine


Réponses:


JSON (JavaScript Object Notation) est un format léger utilisé pour l'échange de données.  Il est basé sur un sous-ensemble du langage JavaScript (la façon dont les objets sont créés en JavaScript). Comme déclaré dans le MDN, certains JavaScript ne sont pas JSON, et certains JSON ne sont pas JavaScript.

Les réponses des services Web constituent un exemple d'utilisation. Dans les «anciens» jours, les services Web utilisaient XML comme principal format de données pour la transmission des données, mais depuis que JSON est apparu (Le format JSON est spécifié dans 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 fonctionnaire Site Web JSON.

JSON est construit sur deux structures:

  • Une collection de paires nom / valeur. Dans divers langages, ceci est réalisé en tant qu'objet, enregistrement, struct, dictionnaire, table de hachage, liste à clé ou tableau associatif.
  • Une liste ordonnée de valeurs. Dans la plupart des langues, ceci est réalisé sous la forme d'un tableau, d'un vecteur, d'une liste ou d'une séquence.

Structure JSON



JSON Object diagram

JSON Array diagram

JSON Value diagram

JSON String diagram

JSON Number diagram

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 var x = {x:y} 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 pas un objet dans son propre droit. Pour en faire un objet Javascript à part entière, vous devez d'abord l'analyser, var x = JSON.parse('{"x":"y"}');, x est maintenant un objet mais ce n'est plus 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 et U + 2029) valides en JSON mais pas en JavaScript (lisez la suite de ceci ici).

Par conséquent, il faut toujours essayer d'utiliser le script de Crockford qui vérifie un JSON valide avant de l'évaluer. Le lien vers l'explication du script est trouvé ici et voici un lien direct dans le fichier js. De nos jours, tous les grands navigateurs sa propre implémentation pour ça.

Exemple sur l'utilisation de l'analyseur JSON (avec le fichier 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 offre également une autre méthode très utile, stringify. Cette méthode accepte un objet JavaScript en tant que paramètre et renvoie une chaîne au format JSON. Ceci est utile lorsque vous voulez 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) prend é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 vous tous qui pensez que JSON est juste pour JavaScript, consultez ce post cela explique et confirme autrement.


Les références


586
2017-12-20 20:54



En bref - JSON est un moyen de sérialiser de telle manière qu’il devienne du code JavaScript. Lorsqu'il est exécuté (avec eval ou autre), ce code crée et renvoie un objet JavaScript contenant les données que vous avez sérialisées. Ceci est disponible car JavaScript autorise la syntaxe suivante:

var MyArray = [ 1, 2, 3, 4]; // MyArray is now an array with 4 elements
var MyObject = {
    'StringProperty' : 'Value',
    'IntProperty' : 12,
    'ArrayProperty' : [ 1, 2, 3],
    'ObjectProperty' : { 'SubObjectProperty': 'SomeValue' }
}; // MyObject is now an object with property values set.

Vous pouvez l'utiliser à plusieurs fins. D'une part, il s'agit d'un moyen confortable de transmettre des données de votre backend serveur à votre code JavaScript. Ainsi, ceci est souvent utilisé dans AJAX.

Vous pouvez également l'utiliser comme un mécanisme de sérialisation autonome, qui est plus simple et prend moins de place que le XML. De nombreuses bibliothèques existent qui vous permettent de sérialiser et désérialiser des objets en JSON pour différents langages de programmation.


47
2018-01-15 01:36



Toutes les réponses ci-dessus se concentrent sur des détails. Donc je vais essayer d'expliquer le concept donc vous serez en mesure de comprendre ce qui précède.

Qu'est-ce que JSON? - Comment je l'ai expliqué à ma femme

Moi: "C'est essentiellement une façon de communiquer avec quelqu'un par écrit ... mais avec des règles.

Femme: Ouais....?

MOI: Prenons l'exemple de l'anglais: nous avons des règles - des points, des virgules, des parenthèses, des traits d'union, des apostrophes, etc. et ils ont tous une signification différente. Fondamentalement, nous avons tous convenu de ce que signifie un arrêt complet (c’est-à-dire que nous devrions faire une pause lorsque nous en lirions un).

Femme: Alors dites-vous que JSON est une façon d'écrire l'anglais à quelqu'un, mais il a des règles sur lesquelles les deux parties sont d'accord?

Moi: Exactement! Sauf que ces règles sont très spécifiques. Dans un anglais prosaïque, les règles sont assez lâches: tout comme avec les combats en cage: vous pouvez faire ce que vous voulez, à l'exception de quelques notions de base (par exemple, le gougeage des yeux). Par exemple, si je voulais dire à l'IRS sur notre famille, je pourrais le faire dans un peu différent en utilisant l'anglais prosaïque. Notez les différences de chaque façon:

Moi: 

• Exemple 1: Notre famille a 4 personnes: Vous, moi et 2 enfants.

• Exemple 2: Notre famille: vous, moi, kid1 et kid2.

• Exemple 3: Famille: [vous, moi, kid1, kid2]

• Exemple 4: nous avons 4 personnes dans notre famille: maman, papa, kid1 et kid2.

Femme:Ok, j'ai l'image. Vous pouvez dire la même chose de différentes manières en anglais. Vous pouvez ajouter quelques mots ici et là, quelques virgules ici et là et tout le monde comprendra encore.

Moi: Exactement. Sauf en JSON, les règles sont très restrictives. Vous ne pouvez communiquer que d'une certaine manière. Et vous devez suivre ces règles pour que quelqu'un d'autre le comprenne: des parenthèses, des virgules dans certains endroits.

Femme: Pourquoi n'utilisent-ils pas un anglais simple à la place?

Moi: Ils le feraient, mais rappelez-vous que nous avons affaire à des ordinateurs. Un ordinateur est stupide et ne sera pas capable de comprendre les phrases. Donc, il faut être vraiment précis quand les ordinateurs sont impliqués, sinon ils sont confus. En outre, JSON est un moyen de communication assez efficace, de sorte que la plupart des choses non pertinentes sont coupées, ce qui est très pratique. Si vous vouliez communiquer notre famille, à un ordinateur, une façon de le faire est comme ceci:

{
                "Family" :  ["Me", "Wife", "Kid1", "Kid2"] 
}

...... et c'est essentiellement JSON. Mais rappelez-vous, vous devez obéir aux règles de grammaire JSON. Si vous ne respectez pas ces règles, un ordinateur ne comprend tout simplement pas (c'est-à-dire analyse) ce que vous écrivez.

Femme: Alors, comment puis-je écrire dans Json?

Moi: Lisez les réponses ci-dessus pour plus de détails. En bref, vous êtes obligé de communiquer des choses en utilisant des paires clé-valeur et des tableaux.

Résumé

JSON est essentiellement un moyen de communiquer des données à quelqu'un, avec des règles très, très spécifiques. 


31
2017-12-21 02:35



En bref, il s'agit d'une notation de script pour transmettre des données. D'une certaine manière, une alternative au XML, supportant nativement les types de données de base, les tableaux et les tableaux associatifs (paires nom-valeur, appelés Objets parce que c'est ce qu'ils représentent).

La syntaxe est celle utilisée en JavaScript et JSON lui-même signifie "JavaScript Object Notation". Cependant, il est devenu portable et est également utilisé dans d'autres langues.

Un lien utile pour les détails est ici:

http://secretgeek.net/json_3mins.asp


28
2018-01-19 05:20



Le format JSON est souvent utilisé pour la sérialisation et la transmission de données structurées via une connexion réseau. Il est principalement utilisé pour transmettre des données entre un serveur et une application Web, ce qui constitue une alternative à XML.


16
2017-12-20 20:27



JSON est la notation d'objet JavaScript. C'est un moyen beaucoup plus compact de transmettre des ensembles de données à travers les connexions réseau par rapport à XML. Je suggère que JSON soit utilisé dans toutes les applications de type AJAX où XML serait autrement l'option "recommandée". La verbosité de XML augmentera le temps de téléchargement et augmentera la consommation de bande passante ($$$). Vous pouvez réaliser le même effet avec JSON et son balisage est presque exclusivement dédié aux données elles-mêmes et non à la structure sous-jacente.


15
2017-12-20 20:34



la réponse courte commune est la suivante: si vous utilisez AJAX pour effectuer des requêtes de données, vous pouvez facilement envoyer et renvoyer des objets en tant que chaînes JSON. Les extensions disponibles pour Javascript supportent les appels JSON () sur tous les types javascript pour envoyer des données au serveur dans une requête AJAX. Les réponses AJAX peuvent renvoyer des objets sous forme de chaînes JSON pouvant être converties en objets Javascript par un simple appel eval, par ex. si la fonction AJAX someAjaxFunctionCallReturningJson est retournée

"{ \"FirstName\" : \"Fred\", \"LastName\" : \"Flintstone\" }"

vous pourriez écrire en Javascript

var obj = eval("(" + someAjaxFunctionCallReturningJson().value + ")");
alert(obj.FirstName);
alert(obj.LastName);

JSON peut également être utilisé pour les charges de service Web et autres, mais il est très pratique pour les résultats AJAX.


11
2018-01-01 18:54



Qu'est-ce que JSON?

JavaScript Object Notation (JSON) est un format d'échange de données léger inspiré des littéraux d'objet de JavaScript.

Les valeurs JSON peuvent être constituées de:

objets (collections de paires nom-valeur)   tableaux (listes de valeurs ordonnées)   cordes (entre guillemets doubles)   Nombres   true, false ou null

JSON est indépendant de la langue.

JSON avec PHP?

Après PHP version 5.2.0, l’extension JSON est décodée et encode les fonctionnalités par défaut.

Json_encode - renvoie la représentation JSON des valeurs Json_decode - Décode la chaîne JSON Json_last_error - Retourne la dernière erreur.

La syntaxe et les règles JSON?

La syntaxe JSON est dérivée de la syntaxe de notation d'objet JavaScript:

Les données sont en paires nom / valeur Les données sont séparées par des virgules Les accolades retiennent les objets Les crochets contiennent des tableaux

http://www.codingslover.com/2015/05/json-with-php-javascript-and-ajax.html

Exemple JSON


8
2017-10-22 10:21



J'aime JSON principalement parce que c'est tellement laconique. Pour le contenu Web qui peut être compressé, ce n’est pas nécessairement un problème Xhtml est si populaire). Mais il y a des occasions où cela peut être bénéfique.

Par exemple, pour un projet, je transmettais des informations qui devaient être sérialisées et transmises via XMPP. Comme la plupart des serveurs limitent la quantité de données que vous pouvez transmettre dans un seul message, j'ai trouvé utile d'utiliser JSON sur l'alternative évidente, XML.

En prime, si vous êtes familier avec Python ou Javascript, vous connaissez déjà JSON et pouvez l’interpréter sans trop vous entraîner.


7
2017-12-20 20:42