我正在解析robot.hear上的消息:
robot.hear /^\[(.+)\]$/, (res) ->
json_string = res.match["input"]
try
params = JSON.parse json_string
console.log "success"
catch error
console.log "error"
具有以下结果:
[] - >成功
[1,2,3] - >成功
[true,false] - >成功
[“a”:true] - >错误#bad语法,如下面的答案中所述
['a':true] - >错误#bad语法,如下面的答案中所述
[“a”,“b”] - >错误#added带有正确JSON语法的示例 [{“a”:“b”}] - >错误#added带有正确JSON语法的示例
简而言之,任何[格式正确的?]带有单引号或双引号的json _string都会引发错误。
答案 0 :(得分:2)
["a": true]
和['a': true]
无效JSON。首先,JSON只识别带双引号的字符串,所以第二个是直接输出。然后,JSON对象括在大括号中,如{"a": true}
,而不是像["a": true]
这样的括号;括号表示数组,数组不能有键,因此JSON也是无效的。因此,JSON.parse
在拒绝这些字符串时是正确的。
答案 1 :(得分:-1)
尝试以下:
[{" a":true}]
[{' a':true}]
您没有提供适当的JSON对象作为输入。