我是JSON和JavaScript对象的新手。JSON和JavaScript对象之间有什么区别?
- 有人能解释一下JSON和JavaScript对象之间的区别吗?
- 它们的用途是什么?
- 一个比另一个更好吗?还是取决于情况?
- 何时使用哪一个,在什么情况下?
- 为什么JSON首先创建?它的主要目的是什么?
- 有人可以举例说明何时应该使用JSON而不是JavaScript对象,反之亦然?
我是JSON和JavaScript对象的新手。JSON和JavaScript对象之间有什么区别?
首先,你应该知道JSON是什么:
JSON的语法灵感来自JavaScript Object Literal符号,但它们之间存在差异。
例如,在JSON所有键必须被引用,而对象文本,这是没有必要的:
// JSON:
{ "foo": "bar" }
// Object literal:
var o = { foo: "bar" };
的引号是强制的JSON,因为在JavaScript(ECMAScript中第三个更准确地版。 ),的保留字作为属性名称的使用不被允许,例如:
var o = { if: "foo" }; // SyntaxError in ES3
虽然,使用一个字符串文字作为属性名称(引用的亲perty名)没有给出问题:
var o = { "if": "foo" };
所以对于“兼容性”(易eval'ing可能)的报价是强制性的?
在JSON的数据类型也被限制为以下值:
string
number
object
array
true
false
null
的Strings
变化的语法。他们必须由双引号分隔,而在JavaScript中,您可以交替使用单引号或双引号。
// Invalid JSON:
{ "foo": 'bar' }
的Numbers
接受的JSON语法也改变,在JavaScript中可以使用十六进制字面值,例如0xFF
,或(臭名昭著)八路字面例如010
。在JSON中,只能使用十进制文字。
// Invalid JSON:
{ "foo": 0xFF }
有一些手推车实施方案(火狐3.5+ IE8 +,json2.js),其中八进制文字被错误地允许的,例如JSON.parse('01')
应产生一个SyntaxError
。
+1好的答案,但可以强调子集:可以使用任何有效的JSON声明也是有效的JavaScript声明,但并非所有有效的JavaScript声明都是JSON声明。 – 2010-10-20 08:26:00
对于展示我们在Javascript文件中看到JSON的唯一方式也是有帮助的;即在一个字符串内。 – 2011-12-09 18:12:49
@CMS在上面完全描述了它,但我会说你可以通过JSON实际上代表什么来区别它们......这就是JavaScript Oject“Notation”! – Alex 2010-10-20 08:20:09
JSON是一个对象的字符串表示形式。它是一种可互操作的序列化格式。它不仅仅绑定到JavaScript。例如,有用于.NET的JSON序列化程序,允许您序列化/反序列化.NET对象。
所以它只是一种格式,允许您从对象转换为字符串,并返回这是方便的,如果你想通过电线传输它们。
它非常接近javascript对象表示,如果你只是一个JSON字符串,你会得到相应的对象。
不要让Crockford听到你说... – nickf 2010-10-20 08:34:48
@nickf,Crockford的json2.js库只是做了一些“正则表达式验证”后的'eval',它没有做任何*解析*:P。事实上,即使他自己的图书馆*也有[他自己的RFC](http://www.ietf.org/rfc/rfc4627.txt?number=4627)的一些偏差!例如,json2.js可能错误地“解析“八进制文字,例如:'JSON.parse(”01“)'...我觉得很有趣:P – CMS 2010-10-20 08:46:35
@CMS好吧,我想道格会反对”简单地''eval()'“这个短语。 (无正则表达式验证等) – nickf 2010-10-20 10:52:14
JSON是一种数据交换格式,它恰好看起来像是您可以执行并返回对象的YAML或JavaScript代码的子集。 JavaScript对象只是JavaScript中的一个对象。
使用JSON作为数据交换格式,您可以用文本形式交换结构化数据。到目前为止,它与JavaScript非常不兼容。 JavaScript对象允许您在执行JavaScript程序期间创建和使用结构化数据。
请一次提出一个问题。 – 2011-12-09 18:11:49
[JSON和Object Literal Notation之间的区别是什么?](http://stackoverflow.com/questions/2904131/what-is-the-difference-between-json-and-object-literal-notation) – Teepeemm 2015-06-12 15:09:30