一尘不染

使用jq解析JSON字符串

json

我正在尝试jq解析一个JSON结构,如:

{
  "a" : 1,
  "b" : 2,
  "c" : "{\"id\":\"9ee ...\",\"parent\":\"abc...\"}\n"
}

也就是说,JSON中的元素是带有转义json的字符串。

所以,我有一些类似的东西 $ jq [.c] myFile.json | jq [.id]

但这崩溃了 jq: error: Cannot index string with string

这是因为.c的输出是字符串,而不是JSON。如何让jq解析此字符串?

我最初的解决方案是使用sed将替换所有的逃生字符(\":\"\",\"\"),但凌乱的,我认为有内置的方式jq做到这一点?

谢谢!

编辑:另外,这里可用的jq版本是:

$ jq --version
jq version 1.3

我想我可以根据需要更新它。


阅读 331

收藏
2020-07-27

共1个答案

一尘不染

jq具有fromjson内置功能:

jq '.c | fromjson | .id' myFile.json

fromjson 是在1.4版中添加的。

2020-07-27