2013-12-10 75 views
5

我在IE一块JS运行与以下行:为什么JSON.Parse说“无效字符”?

var data = JSON.parse("{ skill: 'SK_AUTO_DEV_TEST', kind: 'IS_REQUIRED' }");

谁能告诉我有什么错呢?

+6

请看看[JSONLint](http://jsonlint.com/)。这是一个在线验证器,它提供了非常好的错误消息。 –

回答

13

因为这不是有效的JSON

JSON.parse('{ "skill": "SK_AUTO_DEV_TEST", "kind": "IS_REQUIRED" }'); 
+1

谢谢。为什么在属性名称周围需要引号?我已经看到,并不总是这种情况下w/JSON解析器。 – skb

+2

该标准需要双引号。 'JSON.parse()'就是这样,也许你使用的另一个解析器在这个规则上放宽了。原因是避开保留字问题。在JavaScript文件中创建一个简单的对象,并尝试'{if:0}'和'{“if”:0}'。猜猜哪一个是错误? – epascarello

+0

你好@epascarello,任何想法如何处理下面的一段代码 'var text ='{“skill”:“SK_AUTO_DEV_TEST”,“kind”:“IS_REQUIRED”}'; JSON.parse(text);'对我来说它说在解析线无效的字符。我厌倦了在w3school单引号,那里它的工作,但在我的JavaScript它的开始和结尾添加双引号使我的解析语句像'JSON.parse(“{”skill“:”SK_AUTO_DEV_TEST“,”kind“:” IS_REQUIRED“}”);' – Jaikrat

2

为了详细说明epascarello的回答,请参考json.org。注意在第一个图中名称/值对中的名称被定义为“字符串”。然后注意在定义“字符串”的图表中,它必须以双引号开始和结束。另请注意,这适用于名称和值。

相关问题