【发布时间】:2021-02-15 15:54:14
【问题描述】:
我经常发现自己想用 jq 命令解析 json,但是 json 中的一个值是一个转义的 json 字符串。
例如如果我像这样用 python 生成数据:
import json
inner = {'a': 'b'}
outer = {'x': json.dumps(inner)}
json.dumps(outer)
我明白了:
{"x": "{\"a\": \"b\"}"}
如何使用jq 命令获取"b"?
$ echo '{"x": "{\"a\": \"b\"}"}' | jq .x
"{\"a\": \"b\"}"
好的,这是第一步。 但结果不是 json 字典。这是一个需要转义并解析成json的字符串。
jq .x.a 抛出错误:jq: error (at <stdin>:1): Cannot index string with string "a"
有没有我可以添加到jq 的参数来将两个jq 步骤链接在一起?
或者我可以使用其他命令吗?
例如
echo '{"x": "{\"a\": \"b\"}"}' | jq .x | jq --some-argument .a
或
echo '{"x": "{\"a\": \"b\"}"}' | jq .x | something-else | jq .a
【问题讨论】: