试图解析JSON字符串,意外的数字

时间:2013-04-14 21:18:44

标签: javascript json

我正在尝试解析这个JSON:

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

我运行JSON.parse(json)但是在执行此操作时我收到错误SyntaxError: Unexpected number。我在谷歌浏览器中试过这个。我不知道问题是什么,因为我可以把JSON字符串放在任何JSON验证器中,它声称JSON是有效的。浏览器不应该能够解析吗?

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:4)

您正在验证字符串文字,它是包含无效JSON的有效JSON字符串。您需要验证字符串的值,该值不是有效的JSON。

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

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

"需要转义。