为什么JSON.parse会阻塞nodejs中的编码字符?
我试图在Google的词典semi-api中查找“flower”这个词。 资源:
https://gist.github.com/DelvarWorld/0a83a42abbc1297a6687
长话短说,我用一个callback参数调用JSONP,然后把它重新排列。
但它遇到了这个障碍:
undefined:1 ple","terms":[{"type":"text","text":"I stopped to buy Bridget some \x3cem\x3ef ^ SyntaxError: Unexpected token x at Object.parse (native)
谷歌正在为我转义HTML字符,这是好的,但JSON.parse
不能处理它们? 什么是我看出这是很好的作品:
$ node > JSON.parse( '{"a":"\x3cem"}' ) { a: '<em' }
我不明白为什么我的叮当声会崩溃
编辑这些都是很好的信息反馈,但没有一个帮助我摆脱堆栈跟踪。
\xHH
不是JSON的一部分,但是是JavaScript的一部分。 这相当于\u00HH
。 由于内置的JSON
似乎不支持它,我怀疑你想要经历修改非内置的JSON实现的麻烦,你可能只是想在沙箱中运行代码并收集产生的对象。
DelvarWorld编辑:
丁丁丁! 这是我更新的例子,如果JSON.parse失败我试图返回一个new Function()
正文:
根据http://json.org ,string的JSON表示中的string字符可能是:
- 任何-Unicode-character-除了 – “或 – 或 – 控制字符
- \”
- \
- \ /
- \ b
- \F
- \ n
- \ r
- \ t
- \四hex数字
所以根据这个清单,你所得到的“json”在\ x3格式不正确
其原因是因为这两者是相同的。
JSON.parse( '{"a":"\x3cem"}' )
和
JSON.parse( '{"a":"<em"}' )
你的string被传递给JSON.parse
已经解码,因为它的文字\x3cem
其实是<em
现在,\ x xx在JavaScript中是有效的,但在JSON中是不合法的,根据http://json.org/,\“bfnrtu ”后面的字符是"\/bfnrtu
。
答案是正确的,但需要进行一些修改。 你可能想试试这个: https : //gist.github.com/Selmanh/6973863