chrome和firefox JSON.stringify(obj)生成非法的字符串文字

时间:2014-10-14 19:45:33

标签: javascript json string syntax-error

使用“JSON.stringify”似乎在firefox和chrome最新产生非法字符串。这是我的测试,全部在控制台中。

首先:创建一个对象:

x={red:[255,0,0],green:[0,255,0],blue:[0,0,255]}
Object {red: Array[3], green: Array[3], blue: Array[3]}

..但是当我在x上使用JSON.stringify时,我得到一个非法的字符串文字,它应该有最外面的单引号。

xj=JSON.stringify(x)
"{"red":[255,0,0],"green":[0,255,0],"blue":[0,0,255]}"

..但JavaScript认为它是一个字符串:

typeof xj
"string"

..它适用于JSON.parse:

xjo=JSON.parse(xj)
Object {red: Array[3], green: Array[3], blue: Array[3]}

..另一方面,直接在控制台中输入字符串化字符串文字会引发错误:

"{"red":[255,0,0],"green":[0,255,0],"blue":[0,0,255]}"
 Uncaught SyntaxError: Unexpected identifier

..如果将两个最外面的引号更改为单引号,则不会发生这种情况。

这里有什么魔法吗?双引号可以嵌套在JSON中吗? MDN JSON页面显示最外面的单引号。

发生了什么事!为什么JSON允许非法字符串?

0 个答案:

没有答案