JSON 和 JavaScript 对象有什么区别? [复制]

2024-05-06

我对 JSON 和 JavaScript 对象很陌生。

  • 有人可以解释一下 JSON 和 JavaScript 对象之间的区别吗?
  • 它们的用途是什么?
  • 这个比那个好吗?还是要看情况而定?
  • 何时使用哪一个、在什么情况下使用?
  • 最初为什么要创建 JSON?其主要目的是什么?
  • 有人可以举例说明何时应该使用 JSON 而不是 JavaScript 对象,反之亦然吗?

首先你应该知道什么是 JSON:

  • It is 语言不可知论者数据交换格式。

JSON 的语法受到 JavaScript Object Literal 表示法的启发,但它们之间存在差异。

例如,在 JSON 中所有keys必须加引号,而在对象字面量中则不需要:

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

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

JSON 中的引号是强制性的,因为在 JavaScript 中(更准确地说是在 ECMAScript 第 3 版中),使用保留字因为属性名称是不允许的,例如:

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

然而,使用字符串文字作为属性名称(引用属性名称)不会出现任何问题:

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

So for “兼容性”(也许很容易评估?)引号是强制性的。

JSON 中的数据类型也限制为以下值:

  • string
  • number
  • object
  • array
  • A literal as:
    • true
    • false
    • null

的语法为Strings变化。他们have to被界定为双引号,而在 JavaScript 中,您可以互换使用单引号或双引号。

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

公认的 JSON 语法Numbers也发生了变化,在 JavaScript 中你可以使用十六进制文字,例如0xFF,或(臭名昭著的)八进制文字,例如010。在 JSON 中,您只能使用十进制文字。

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

There are some buggy implementations (Firefox 3.5+, IE8+, json2.js) where octal literals are wrongly allowed, e.g. JSON.parse('01') should produce a SyntaxError.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSON 和 JavaScript 对象有什么区别? [复制] 的相关文章

随机推荐