JSON和JavaScript对象之间有什么区别? [复制
-
09-10-2019 - |
题
这个问题在这里已经有一个答案:
- JSON和对象文字符号有什么区别? 10个答案
我是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程序期间创建并使用结构化数据。