说我有以下JSON:
{
"a": 0,
"b": "c",
"d": {
"e": {
"f": "g",
"comments": {
"leading": "Lorem ipsum"
},
"h": {
"i": {
"j": [
1,
2
]
},
"comments": {
"trailing": "dolor sit"
}
}
},
"comments": {
"leading": "amet."
}
}
}
我想获得一个数组,其中包含所有命名字段的值comments
(可以嵌套在任何级别)。因此,在这种情况下,我想获得:
[
{
"leading": "Lorem ipsum"
},
{
"trailing": "dolor sit"
},
{
"leading": "amet."
}
]
数组的顺序无关紧要。
如何使用jq
?我只用它执行了基本的工作,却无法产生任何接近我需要的东西。
在此先感谢☺️
您可以使用该getpath
功能。使用paths
找出所有龙头高达路径.comments
,并获得路径值
jq '[ getpath ( paths | select( .[-1] == "comments" ) ) ]'
或使用递归下降来过滤包含.comments
并获取其值的对象
jq '[ recurse | select(has("comments")?).comments ]'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句