我正在尝试解析这个JSON:
var json = '{"material":"Gummislang 3\/4\" 30 m (utanp\u00e5liggande sk\u00e5p)"}'
我运行JSON.parse(json)
但是在执行此操作时我收到错误SyntaxError: Unexpected number
。我在谷歌浏览器中试过这个。我不知道问题是什么,因为我可以把JSON字符串放在任何JSON验证器中,它声称JSON是有效的。浏览器不应该能够解析吗?
答案 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
"
需要转义。