Col*_*gan 56 string json escaping sed jq
我试图jq解析一个JSON结构,如:
{
"a" : 1,
"b" : 2,
"c" : "{\"id\":\"9ee ...\",\"parent\":\"abc...\"}\n"
}
Run Code Online (Sandbox Code Playgroud)
也就是说,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
Run Code Online (Sandbox Code Playgroud)
我想我可以根据需要更新它.
jwo*_*der 109
jq有fromjson内置的:
jq '.c | fromjson | .id' myFile.json
Run Code Online (Sandbox Code Playgroud)
fromjson 在版本1.4中添加.
Cas*_*yte 32
您可以使用将忽略字符的原始输出(-r):
jq -r .c myfile.json | jq .id
Run Code Online (Sandbox Code Playgroud)
ADDENDUM:这有一个优点,它适用于jq 1.3及以上版本; 实际上,它应该适用于具有-r选项的每个jq版本.