3

我正在尝试在Google 的字典 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)

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

$ node

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

我不明白为什么我的东西会崩溃

编辑这些都是很好的信息响应,但它们都不能帮助我摆脱堆栈跟踪。

4

4 回答 4

2

\xHH不是 JSON 的一部分,而是 JavaScript 的一部分。它相当于\u00HH。由于内置JSON似乎不支持它,而且我怀疑您是否想通过修改非内置 JSON 实现的麻烦,您可能只想在沙箱中运行代码并收集结果目的。

于 2013-07-31T04:05:41.507 回答
0

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

  • any-Unicode-character- except-"-or--or- control-character
  • \"
  • \
  • \/
  • \b
  • \F
  • \n
  • \r
  • \t
  • \u 四位十六进制数字

因此,根据该列表,您获得的“json”格式错误为 \x3

于 2013-07-31T04:03:58.140 回答
0

它之所以起作用,是因为这两者是等价的。

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

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

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

现在,\x xx在 JavaScript 中有效,但在 JSON 中无效,根据http://json.org/,您可以在 a 之后使用的唯一字符\"\/bfnrtu

于 2013-07-31T04:04:54.410 回答
0

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

于 2013-10-14T10:50:38.393 回答