首先,您应该知道什么是JSON:
- 它是与 语言无关的 数据交换格式。
JSON的语法受Javascript对象文字表示法的启发,但是它们之间存在差异。
例如,在JSON中,所有 键都 必须加引号,而在对象文字中,则不需要:
// 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中的数据类型也限制为以下值:
string
number
object
array
- 文字为:
true
false
null
Strings变化的语法。它们 必须 用 双引号 分隔,而在Javascript中,您可以互换使用单引号或双引号。
// Invalid JSON:{ "foo": 'bar' }可接受的JSON语法
Numbers也发生了变化,例如
0xFF,在Javascript中,您可以使用十六进制文字,或(臭名昭著的)八进制文字,例如
010。在JSON中,您只能使用十进制文字。
// Invalid JSON:{ "foo": 0xFF }有些错误的实现(Firefox 3.5+,IE8+,json2.js)错误地允许使用八进制文字,例如
JSON.parse('01')应产生一个SyntaxError。



