Ma question est la suivante: est-ce que JSON est techniquement une chaîne? Je comprends que les données sont transmises sur Internet via un format texte. Donc, le format texte signifie une chaîne? J'ai eu une interview dans laquelle j'ai glissé que JSON est essentiellement une chaîne et je me suis littéralement fait exploser. Le format du texte n'est-il pas une chaîne? Nous stringify toujours l'objet et l'envoyons au format JSON, n'est-ce pas? Alors, cela ne fera-t-il pas de JSON une chaîne?
Je n'ai pas trouvé de réponses claires sur Google indiquant que JSON est une chaîne. Partout on dit que c'est un format texte.
4 Réponses :
Q: JSON est-il une chaîne?
R: Non. C'est une norme.
Nous transmettons cependant ce format via une chaîne encodée ou brute via le protocole http , puis en utilisant une API comme JSON.parse pour créer cette représentation retour en tant qu'objets appariés clé-valeur dans la mémoire d'un processus.
Du contexte des données - JSON n'est pas une chaîne. Il représente les données dans des paires clé-valeur. Il suit sa propre stratégie de validation. Il a son propre ensemble de règles.
Si votre contexte concerne la manière dont il est transmis sur le réseau, HTTP le convertit généralement en une chaîne brute comme spécifié par @ samuel-toh.
Même dans votre code (si vous utilisez, par exemple, Javascript) vous pouvez le convertir en chaîne en appelant:
JSON.stringify (votreJSONObject);
Et peut le reconvertir en objet Javascript programmable en appelant:
JSON.parse(stringifiedJSON);
Pour répondre à votre question:
Non, JSON n'est pas une chaîne. C'est une structure de données.
MODIFIER: Veuillez ne pas confondre objet Javascript et JSON. Ils sont différents. Les méthodes que j'ai spécifiées ci-dessus prennent l'objet Javascript comme paramètre. Ce que j'essaie d'impliquer dans ma réponse, c'est que JSON est un format d'échange de données indépendant du langage. (Ce n'est pas ma déclaration, il se trouve ici .)
Il existe plusieurs différences dans les objets JSON et Javascript, comme @ t-niese l'a souligné, les objets Javascript peuvent avoir des fonctions comme valeurs. Et un objet Javascript valide peut être un JSON non valide, bien qu'un JSON valide soit un objet Javascript valide. Pardonnez-moi si j'ai créé de la confusion.
JSON.stringify prend un objet JavaScript comme entrée et non un objet JSON. Il n'y a rien de tel qu'un JSONObject en JavaScript, un objet JavaScript peut contenir des fonctions comme valeurs, peut avoir une référence circulaire, des propriétés définies, ... et ces choses ne peuvent pas être représentées en JSON.
Il n'y a pas de "JSON programmable". Vous parlez d'un objet JavaScript. JSON est une sérialisation textuelle de cela. Vous ne travaillez pas avec JSON lorsque vous avez obj = {name: "Fred"} dans JS. Ce qui reviendra ensuite et expliquera pourquoi "JSON Object" est un abus de langage. Vous parlez d'un objet textuel de données sérialisées ...? Cela a moins de sens qu'un "code PIN" car il ne s'agit que d'une tautologie, tandis qu'un "objet JSON" est deux concepts activement différents transmis en un seul. C'est un oxymore.
JSON n'est certainement pas une structure de données. C’est un format de sérialisation. C'est comme dire que CSV est une structure de données, ce qui n'est clairement pas.
JSON n'est pas une chaîne
c'est un langage pour l'échange de données entre plusieurs domaines, JSON est essentiellement un sous-ensemble de YAML , qui est également un moyen d'échanger des données entre les parties.
Échange de données: l'échange de données consiste à prendre des données structurées sous un schéma source et à les transformer en données structurées sous un schéma cible afin que les données cibles soient une représentation précise des données source. Pour transformer des données, vous avez certainement besoin d'un analyseur qui vous permet de justifier si le schéma de données est correct ou non pour un programme informatique.
JSON est un format de données textuel suivant la syntaxe d'objet JavaScript. JSON existe en tant que chaîne - utile lorsque vous souhaitez transmettre des données sur un réseau. Il doit être converti en un objet JavaScript natif lorsque vous souhaitez accéder aux données.
Ces informations sont tirées de la documentation MDN, veuillez les consulter pour référence: https://developer.mozilla.org/en-US/ docs / Learn / JavaScript / Objects / JSON https://www.w3schools.com/js/js_json_intro.asp p >
Vous obtiendrez les meilleures connaissances sur ce lien json.org
JSON.stringifyrenvoie une chaîne JSON , mais "JSON" seul signifie simplement le format textuel pour représenter les données. Vous pouvez également diffuser des données JSON ou les mettre dans un fichier, où je ne l'appellerais pas une "chaîne".Eh bien, oui. Tout le monde dira "C'est une norme". . Mais c'est une chaîne. Aussi simple que cela.
Une chaîne est le type auquel le texte correspond en JavaScript. La réponse est donc oui et non. Oui, c'est une chaîne car c'est ainsi que le texte est représenté dans JS. Non, ce n'est que la façon dont son texte est représenté en JavaScript, pas un universel (bien que commun dans d'autres langues).
"... envoyez-le en JSON" - Non, nous n'envoyons jamais rien "en JSON" puisque JSON est un standard, d'où le mot "notation" dans le nom. Au lieu de cela, nous les envoyons «en JSON» - nous encodons les objets selon le format JSON en chaînes.
JSON est un texte qui adhère au format normalisé JavaScript Object Notation. Lors de la transmission de données JSON, en particulier sur le câble, elles sont généralement codées sous forme de chaîne. Mais toutes les chaînes ne sont pas JSON, et tous les JSON ne sont pas encodés sous forme de chaîne.