解析 JSON 和其他字段中的 JSON 字符串

eag*_*gle 6 bash json jq

我有一个文件,s3解压后有这种格式

{"a": "foo",
 "b": "bar",
 "c": : "{\"hello\": \"world\"}"}
Run Code Online (Sandbox Code Playgroud)

现在我知道我可以c通过做来解析的值jq '.c | fromjson | .hello'

但是假设我想要这个 json 中的所有值,a, b, and c. 这是我目前拥有的代码片段:

aws s3 cp s3://somebucket/somekey.gz - | gunzip | jq '[.a, .b]'
Run Code Online (Sandbox Code Playgroud)

我如何将抓取值c合并到这个表达式中?

Rom*_*est 8

我想要这个 json、a、b 和 c 中的所有值

jq有效 JSON 结构的解决方案:

... | jq '[.a, .b, (.c | fromjson | .[])]'
Run Code Online (Sandbox Code Playgroud)
  • .[]- 返回数组/对象的所有值

输出:

[
  "foo",
  "bar",
  "world"
]
Run Code Online (Sandbox Code Playgroud)