【发布时间】:2017-10-04 12:19:26
【问题描述】:
如何提取所有键名,即使在带有 jq 的嵌套对象中? 比如我有json:
{
"a": 1,
"b": {
"c": 2
}
}
我想得到列表: a, b, b.c
我知道对于顶级密钥,我可以通过以下方式获得:
. | to_entries[] | .key,但是嵌套对象中的键呢?
【问题讨论】:
如何提取所有键名,即使在带有 jq 的嵌套对象中? 比如我有json:
{
"a": 1,
"b": {
"c": 2
}
}
我想得到列表: a, b, b.c
我知道对于顶级密钥,我可以通过以下方式获得:
. | to_entries[] | .key,但是嵌套对象中的键呢?
【问题讨论】:
短jq解决方案:
jq -r '[paths | join(".")]' jsonfile
输出:
[
"a",
"b",
"b.c"
]
paths 函数输出其输入中所有元素的路径
join(".") - 连接分层路径中的键
【讨论】:
paths | map(.|tostring)|join(".")