3

我正在尝试解析这个 JSON:

var json = '{"material":"Gummislang 3\/4\" 30 m (utanp\u00e5liggande sk\u00e5p)"}'

我运行JSON.parse(json)SyntaxError: Unexpected number这样做时出现错误。我在谷歌浏览器中试过这个。我不知道问题出在哪里,因为我可以将 JSON 字符串放入任何 JSON 验证器中,并且它声称 JSON 是有效的。浏览器不应该能够解析它吗?

4

2 回答 2

6

您将 JSON 对象表示插入到 JavaScript 字符串中,而没有正确转义表示。

为避免必须这样做,请删除您在表示周围添加的引号,并跳过JSON.parse(json)- PHP 的默认输出json_encode()在此上下文中使用时是有效的 JavaScript。

为了安全起见,您应该尽可能指定该JSON_HEX_TAG选项。如果 JSON 可能最终位于解析为 XML 的文档中,这将防止跨站点脚本。(对于 XML 文档,JSON 也应该在 CDATA 部分中。)

于 2013-04-14T21:26:11.163 回答
4

您正在验证string literal,这是一个包含无效 JSON 的有效 JSON 字符串。您需要验证字符串的值,这不是有效的 JSON。

如果将字符串值粘贴到 JSON 验证器中,您将看到错误来自此部分:

"material": "Gummislang 3/4"30m

"需要逃避。

于 2013-04-14T21:21:17.283 回答