使用“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允许非法字符串?