首页 > 解决方案 > JQ获取json中的所有简单值

问题描述

我有一个包含嵌套字典的 json 结构,我想获取其中的所有简单值(字符串、整数、布尔值等,但不是字典和列表)。

我如何使用 JQ 来实现这一点。

例子:

{
    "a": 10,
    "b": {
        "d": 20,
        "e": "hello"
    },
    "c": {
        "z": {
            "f": true
        }
    }
}

预期输出不一定按此顺序:

10
20
"hello"
true

标签: jsonjqscalar

解决方案


递归,只选择标量值:

$ cat tmp.json
{
  "a": 10,
  "b": {"d": 20, "e": "hello"},
  "c": {"z": {"f": true}}
}
$ jq 'recurse | scalars' tmp.json
10
20
"hello"
true

推荐阅读