【问题标题】:jq to fetch value using key from a nested json when a key can be deeply nested当键可以深度嵌套时,jq 使用嵌套 json 中的键获取值
【发布时间】:2018-12-03 10:19:30
【问题描述】:

我有一个嵌套的 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"]

提前致谢

【问题讨论】:

    标签: sh jq


    【解决方案1】:

    如果您需要访问“无论嵌套多深”的内容,那么recurse 就是您的朋友。

    jq '[recurse|.url? // empty]' file.json
    

    当递归到达不是对象的东西(例如叶子字符串)时,问号可以防止我们失败。而//empty 将我们从没有“url”键的对象中获得的空值替换为空结果(因此它会删除它们)。

    【讨论】:

    • 谢谢 Michal,我对 shell 脚本的了解为零。我尝试使用上述 JSON 执行您在 jqplay(jqplay.org) 中发送的代码,但似乎没有帮助。
    • 有趣。 jqplay上的jq版本需要?//之间有空格,我电脑上的版本不需要。
    猜你喜欢
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多