解析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}
答案 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和一些“文字纠缠”的组合也可能会起到作用。