web-dev-qa-db-fra.com

Quelles sont les différences entre les objets JSON et JavaScript?

Je suis nouveau sur les objets JSON et JavaScript.

  • Quelqu'un peut-il s'il vous plaît expliquer les différences entre JSON et objet JavaScript?
  • Quelles sont leurs utilisations?
  • Est-ce que l'un est meilleur que l'autre? Ou cela dépend-il de la situation?
  • Quand utiliser lequel, dans quelle situation?
  • Pourquoi JSON a-t-il été créé? Quel était son but principal?
  • Quelqu'un peut-il donner des exemples d'utilisation d'un JSON plutôt que d'un objet JavaScript et inversement?
104
Pheap

D'abord, vous devez savoir ce qu'est JSON:

  • C'est langue agnostique format d'échange de données.

La syntaxe de JSON a été inspirée par la notation JavaScript Object Literal, mais il existe des différences entre eux.

Par exemple, dans JSON, toutes les clés doivent être entre guillemets, alors que dans les littéraux d'objet, cela n'est pas nécessaire:

// JSON:
{ "foo": "bar" }

// Object literal:
var o = { foo: "bar" };

Les guillemets sont obligatoires sur JSON car en JavaScript (plus précisément dans ECMAScript 3rd. Edition), l'utilisation de mots réservés en tant que noms de propriété n'est pas autorisée, par exemple:

var o = { if: "foo" }; // SyntaxError in ES3

L'utilisation d'un littéral de chaîne en tant que nom de propriété (en indiquant le nom de la propriété) ne pose aucun problème:

var o = { "if": "foo" }; 

Donc, pour "compatibilité" (et une évaluation facile peut-être?), Les guillemets sont obligatoires.

Les types de données dans JSON sont également limités aux valeurs suivantes:

  • string
  • number
  • object
  • array
  • Un littéral tel que:
    • true
    • false
    • null

La grammaire de Strings change. Ils doivent obligatoirement être délimités par guillemets doubles, alors qu'en JavaScript, vous pouvez utiliser des guillemets simples ou doubles indifféremment.

// Invalid JSON:
{ "foo": 'bar' }

La grammaire JSON acceptée de Numbers change également. En JavaScript, vous pouvez utiliser des littéraux hexadécimaux, par exemple 0xFF, Ou (les tristement célèbres) littéraux octaux, par exemple. 010. En JSON, vous ne pouvez utiliser que des littéraux décimaux.

// Invalid JSON:
{ "foo": 0xFF }

Il existe certaines implémentations boguées (Firefox 3.5+, IE8 +, json2.js) où les littéraux octaux sont faussement autorisés, par exemple. JSON.parse('01') devrait produire un SyntaxError.

153
CMS

JSON est une représentation sous forme de chaîne d'un objet. C'est un format de sérialisation interopérable. Ce n'est pas lié uniquement à JavaScript. Par exemple, des sérialiseurs JSON pour .NET vous permettent de sérialiser/désérialiser des objets .NET.

Il s’agit donc simplement d’un format vous permettant de convertir des objets en chaîne et retour, ce qui est pratique si vous souhaitez les transférer par le fil.

C'est très proche de la représentation d'objet javascript et si vous simplement eval() une chaîne JSON, vous obtiendrez l'objet correspondant.

25
Darin Dimitrov

JSON est un format d'échange de données, qui ressemble à un sous-ensemble de code YAML ou JavaScript que vous pouvez exécuter et récupérer un objet. Un objet JavaScript est juste un objet en JavaScript.

JSON étant un format d’échange de données, vous pouvez échanger des données structurées sous forme textuelle. Il est assez découplé de JavaScript maintenant. Les objets JavaScript vous permettent de créer et de travailler avec des données structurées lors de l'exécution d'un programme JavaScript.

1
Joey