使用jq,是否有可能返回相同的json对象,但只能在多个级别上选择字段/键?



假设我有一个多级json,如下所示:

{
"array": [
1,
2,
3
],
"boolean": true,
"color": "gold",
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d"
},
"string": "Hello World"
}

jq可以返回相同的json,但与字段,我选择在多个级别?

{
"object": {
"a": "b",
},
"string": "Hello World"
}

这里,我在顶层选择了string字段,在object字段中选择了a字段。

编辑:在实践中,我想选择的每个级别上都有多个字段,级别为>4.

是有可能的。我曾经写过一个函数,并张贴在这里。你可以这样使用:

def pick(paths):
. as $in
| reduce path(paths) as $path (null;
setpath($path; $in | getpath($path))
);
pick(.object.a, .string)
<<p><一口>在线演示/一口>

最新更新