为什么JSON.parse会阻塞nodejs中的编码字符?

时间:2013-07-31 03:53:38

标签: json node.js unicode

我试图查找" flower"在Google's dictionary semi-api。来源:

https://gist.github.com/DelvarWorld/0a83a42abbc1297a6687

长话短说,我用一个回调参数调用JSONP然后重新编写它。

但它遇到了这个障碍:

undefined:1
ple","terms":[{"type":"text","text":"I stopped to buy Bridget some \x3cem\x3ef
                                                                    ^
SyntaxError: Unexpected token x
    at Object.parse (native)

Google正在为我提供转义的HTML字符,这很好,但JSON.parse无法处理它们?让我感到高兴的是,这很好用:

$ node

> JSON.parse( '{"a":"\x3cem"}' )
  { a: '<em' }

我不知道为什么我的事情崩溃了

编辑这些都是很好的信息回复,但它们都没有帮助我摆脱堆栈跟踪。

4 个答案:

答案 0 :(得分:1)

\xHH不是JSON的一部分,但却是JavaScript的一部分。它相当于\u00HH。由于内置的​​JSON似乎不支持它,我怀疑你是否想要修改非内置JSON实现的麻烦,你可能只想运行代码沙盒并收集生成的对象。

答案 1 :(得分:0)

根据http://json.org,字符串的JSON表示中的字符串字符可能是:

  • 任何-Unicode的character-    除非 - “ - 或 - 或 -    控制字符
  • \“
  • \
  • \ /
  • \ B'/ LI>
  • \˚F
  • \ n
  • \ r
  • \吨
  • \ u four-hex-digits

所以根据该列表,你得到的“json”在\ x3

时格格不入

答案 2 :(得分:0)

它起作用的原因是因为这两者是等价的。

JSON.parse( '{"a":"\x3cem"}' )

JSON.parse( '{"a":"<em"}' )

你的字符串传递给JSON.parse已解码,因为它的文字\x3cem实际上是<em

现在,\ x 在JavaScript中有效,但在JSON中无效,根据http://json.org/ \"\/bfnrtu {{}}}之后的唯一字符

答案 3 :(得分:0)

答案是正确的,但需要几次修改。你可能想尝试这个:https://gist.github.com/Selmanh/6973863