106 votes

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

Je suis novice en matière de JSON et d'objets JavaScript.

  • Quelqu'un peut-il expliquer les différences entre JSON et objet JavaScript ?
  • Quelles sont leurs utilisations ?
  • L'un est-il 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éé en premier lieu ? Quel était son objectif principal ?
  • Quelqu'un peut-il donner des exemples de cas où il faut utiliser JSON plutôt qu'un objet JavaScript et vice versa ?

153voto

CMS Points 315406

Tout d'abord, vous devez savoir ce qu'est JSON :

  • Il est agnostique en matière de langues format d'échange de données.

La syntaxe de JSON est inspirée de la notation JavaScript Object Literal, mais il existe des différences entre les deux.

Par exemple, dans JSON, tous les clés doit être cité, alors que ce n'est pas nécessaire pour les littéraux d'objet :

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

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

Les guillemets sont obligatoires dans JSON parce qu'en JavaScript (plus exactement dans la 3e édition d'ECMAScript), l'utilisation des guillemets est interdite. mots réservés comme noms de propriétés n'est pas autorisée, par exemple :

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

En revanche, l'utilisation d'une chaîne littérale comme nom de propriété (en citant 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
  • Au sens littéral du terme :
    • true
    • false
    • null

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

// 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 (le tristement célèbre) les littéraux octaux, par ex. 010 . Dans JSON, vous ne pouvez utiliser que des littéraux décimaux.

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

Dans certaines implémentations boguées (Firefox 3.5+, IE8+, json2.js), les littéraux octaux sont autorisés à tort. <code>JSON.parse('01')</code> devrait produire un <code>SyntaxError</code> .

25voto

Darin Dimitrov Points 528142

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

Il s'agit donc simplement d'un format permettant de convertir des objets en chaînes de caractères et inversement, ce qui est pratique si vous voulez les transférer par câble.

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

1voto

Joey Points 148544

JSON est un format d'échange de données, qui ressemble à un sous-ensemble de YAML ou à un code JavaScript que vous pouvez exécuter pour obtenir un objet en retour. Un objet JavaScript est simplement un objet en JavaScript.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X