Quelles sont les différences entre JSON et JavaScript object? [dupliquer]

cette question a déjà une réponse ici:

  • Quelle est la différence entre JSON et la Notation littérale objet? 8 réponses

je suis nouveau pour les objets JSON et JavaScript.

  • est-ce que quelqu'un peut expliquer les différences entre JSON et Objet JavaScript?
  • à quoi servent-ils?
  • Est l'un 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?
  • est-ce que quelqu'un peut donner des exemples du moment où on devrait utiliser JSON plutôt qu'un objet JavaScript et vice versa?
100
demandé sur Barry Michael Doyle 2010-10-20 12:08:36

3 réponses

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

  • Il est langue agnostique data interchange format.

la syntaxe de JSON a été inspirée par la notation littérale JavaScript, mais il y a des différences entre eux.

par exemple, dans JSON tous les clés doivent être cités, alors que dans la littérature objet ce n'est pas nécessaire:

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

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

les citations sont obligatoires sur JSON car en JavaScript (plus exactement en ECMAScript 3rd. Édition), l'utilisation de mots réservés comme noms de propriété est rejetée, par exemple:

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

alors que, en utilisant une chaîne de caractères littérale comme nom de propriété (citant le nom de la propriété) ne donne aucun problème:

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

donc pour "compatibilité" (et eval'ing facile peut-être?) le 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 comme:
    • true
    • false
    • null

la grammaire de Strings change. Ils doivent être délimités par guillemets , tandis que dans JavaScript, vous pouvez utiliser des guillemets simples ou doubles de façon interchangeable.

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

la grammaire JSON acceptée de Numbers change aussi, en JavaScript vous pouvez utiliser des littérales hexadécimales, par exemple 0xFF , ou (l'infâme) littérales octales par exemple 010 . Dans JSON, vous ne pouvez utiliser que des nombres décimaux.

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

il y a quelques implémentations buggées (Firefox 3.5+, IE8+, json2.js) où les littérales octales sont autorisées à tort, par exemple JSON.parse('01') devrait produire un SyntaxError .

143
répondu CMS 2017-04-08 14:39:21

JSON est une représentation string d'un objet. Il s'agit d'un format de sérialisation interopérable. Il n'est pas seulement lié à javascript. Par exemple, il existe des sérialiseurs JSON pour .NET qui vous permettent de sérialiser/deserialiser les objets .NET.

donc c'est juste un format vous permettant de convertir des objets en chaîne et retour ce qui est pratique si vous voulez les transférer sur le fil.

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

23
répondu Darin Dimitrov 2010-10-20 08:13:27

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 n'est qu'un objet JavaScript.

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

1
répondu Joey 2010-10-20 08:15:09