javascript - JSON 和 JavaScript 对象有什么区别?

我是 JSON 和 JavaScript 对象的新手。

  • 谁能解释一下 JSON 和 JavaScript 对象之间的区别?
  • 它们的用途是什么?
  • 一个比另一个好?还是视情况而定?
  • 什么时候用哪一个,在什么情况下?
  • 为什么首先要创建 JSON?它的主要目的是什么?
  • 谁能举例说明何时应该使用 JSON 而不是 JavaScript 对象,反之亦然?

最佳答案

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

  • 它是 与语言无关的数据交换格式。

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

例如,在 JSON 中,所有的 keys 都必须被引用,而在对象字面量中,这不是必需的:

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

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

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

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

虽然,使用字符串文字作为属性名(引用属性名)没有问题:

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

所以对于“兼容性”(也许是简单的评估?)引号是强制性的。

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

  • 字符串
  • 编号
  • 对象
  • 数组
  • 文字为:
    • null

Strings 的语法发生了变化。它们必须双引号分隔,而在JavaScript中,你可以互换使用单引号或双引号。

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

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

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

有一些错误的实现(Firefox 3.5+、IE8+、json2.js)错误地允许使用八进制文字,例如JSON.parse('01') 应该产生 SyntaxError

https://stackoverflow.com/questions/3975859/

相关文章:

javascript - 将数据发布到 JsonP

ruby - 如何以正确的格式写入 JSON 文件

json - JSON 值是否可以包含多行字符串

javascript - JavaScript 可以连接 MySQL 吗?

python - 检查键是否存在并使用 Python 迭代 JSON 数组

json - 带 json 参数的 curl GET 请求

javascript - 如何在 Javascript/HTML5 中解析 Excel (XLS)

json - 如何从 http.Get 获取 JSON 响应

ruby-on-rails - 使用 Rails 和 HTTParty 将 JSON 发布到 API

python - 如何将 XML 字符串转换为字典?