我的Node.js hubot代码中出现奇怪的JSON.parse错误

时间:2015-08-23 17:39:33

标签: json node.js hubot

我正在解析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都会引发错误。

2 个答案:

答案 0 :(得分:2)

["a": true]['a': true]无效JSON。首先,JSON只识别带双引号的字符串,所以第二个是直接输出。然后,JSON对象括在大括号中,如{"a": true},而不是像["a": true]这样的括号;括号表示数组,数组不能有键,因此JSON也是无效的。因此,JSON.parse在拒绝这些字符串时是正确的。

答案 1 :(得分:-1)

尝试以下:

[{" a":true}]

[{' a':true}]

您没有提供适当的JSON对象作为输入。