这个问题在这里已经有一个答案:

我是JSON和JavaScript对象的新手。

  • 有人可以解释JSON和JavaScript对象之间的区别吗?
  • 他们的用途是什么?
  • 这个比那个好吗?还是取决于情况?
  • 什么时候使用哪个情况?
  • 为什么JSON首先创建?它的主要目的是什么?
  • 有人可以举例说明何时应该使用JSON而不是JavaScript对象,反之亦然?
有帮助吗?

解决方案

首先,您应该知道JSON是什么:

  • 这是 语言不可知论 数据交换格式。

JSON的语法灵感来自JavaScript对象文字符号,但它们之间存在差异。

例如,在JSON中 钥匙 必须引用,而在对象文字中,这不是必需的:

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

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

引用在JSON上是强制性的,因为在JavaScript(更准确地说 保留的单词 因为不允许属性名称,例如:

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

同时,使用字符串文字作为属性名称(引用属性名称)没有任何问题:

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

因此对于 “兼容性” (也许很容易评估?)引用是强制性的。

JSON中的数据类型也仅限于以下值:

  • string
  • number
  • object
  • array
  • 字面意思:
    • true
    • false
    • null

语法 Strings 变化。他们 必须 被划界 双引号, ,在JavaScript中,您可以互换使用单引号或双引号。

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

公认的JSON语法 Numbers 另外,在JavaScript中,您可以使用十六进制文字,例如 0xFF, ,或(臭名昭著的)八分文文字 010. 。在JSON中,您只能使用十进制文字。

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

有一些越野车的实现(Firefox 3.5+,IE8+,JSON2.JS),其中允许八分字母错误,例如 JSON.parse('01') 应该产生一个 SyntaxError.

其他提示

JSON是对象的字符串表示。这是一种互操作的序列化格式。它不仅与JavaScript有关。例如,有.NET的JSON序列化器允许您序列化/deperialize .NET对象。

因此,这只是一种格式,您可以将对象转换为串和背面,如果您想通过电线传输它们,这很方便。

它非常接近JavaScript对象表示,如果您只是简单地 eval() JSON字符串您将获得相应的对象。

JSON是一种数据互换格式,恰好看起来像YAML或JavaScript代码的子集,您可以执行并重新获取对象。 JavaScript对象只是JavaScript中的一个对象。

由于JSON是数据互换格式,您可以以文本形式交换结构化数据。到目前为止,它与JavaScript相当分离。 JavaScript对象允许您在执行JavaScript程序期间创建并使用结构化数据。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top