在groovy从rabbitmq收回json

时间:2015-08-27 21:25:14

标签: json groovy rabbitmq

解析RabbitMq提供的json时遇到问题。 当我打印Rabbit消息时,我得到了:

```{r}
library_local('ggplot2')
qplot(rnorm(10))
```

我需要用JsonSlurper解析这个json,但我得到了例外:

{id=546456, userId=345345}

似乎缺少引号字符。如何解析它没有错误?感谢

修改

当我发送此消息时:

groovy.json.JsonException: Unable to parse JSON object



     The current character read is '{' with an int value of 123
    expecting '}' or ',' but got current char 'i' with an int value of 105
    line number 1
    index number 1

我以同样的形式回复此消息,例如:

{'id':663558460,"userId":345345}

但还有另一个例外:

{'id':663558460,"userId":345345}

2 个答案:

答案 0 :(得分:3)

这是无效的JSON:{id=546456, userId=345345}

这两个都不是:{'id':663558460,"userId":345345}

JSON规范要求键和字符串值使用双引号。

这是有效的JSON:{"id":663558460,"userId":345345}

注意两个键周围的双引号。您需要调整代码以正确格式化发送JSON文档

答案 1 :(得分:0)

有时候,jq(JSON查询处理器)对准JSON输入很有帮助。在给出的特定情况下,如果准JSON文本放在名为invalid.json的文件中:

$ jq -n -f <(sed 's/=/:/g' invalid.json)
{
  "id": 546456,
  "userId": 345345
}

以上情况之所以有效,因为在您的情况下,盲目地用“:”代替“=”是令人满意的。

然而,即使情况并非如此,jq和一些“文字纠缠”的组合也可能会起到作用。