我有一个嵌套的JSON,如下所示。无论嵌套的深度如何,我都必须列出所有“ .url”的值。
{
section1: {
url: "abc/efg/dgh.com",
name: "test1"
},
section2: {
.section3: {
url: "efef/dedede/efdgh.com",
name: "test2"
}
}
}
预期输出如下:
["abc/efg/dgh.com", "efef/dedede/efdgh.com"]
预先感谢
答案 0 :(得分:2)
如果您需要访问“无论嵌套有多深”的内容,那么recurse
是您的朋友。
jq '[recurse|.url? // empty]' file.json
当递归到达非对象(例如,叶子字符串)之类的东西时,问号可防止我们失败。并且//empty
用没有结果的空值替换我们从没有“ url”键的对象中得到的空值(因此它将删除它们)。