json 根据jq中另一个对象的值选择一个对象

s1ag04yj  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(150)

下面是一个简单的JSON。

{
  "buildsByBranchName": {
    "origin/master": { "buildNumber": 28694 },
    "master": { "buildNumber": 28563 },
    "refs/remotes/origin/master": { "buildNumber": 4094 }
  },
  "lastBuiltRevision": {
    "branch": [
      { "name": "origin/master" }
    ]
  }
}

我想查找最后一个生成的分支的内部版本号。
这样做的逻辑是找到分支的名称.lastBuiltRevision.branch[0].name = origin/master。然后使用分支名称查找内部版本号.buildsByBranchName | to_entries[] | select(."key" == "origin/master") .value.buildNumber = 28694。但我不知道如何把它们结合起来。
.buildsByBranchName之后,我在选择中无法访问lastBuiltRevision。或者有什么办法?
我大概可以用两个呼叫jq来完成这个。但我真的很想用一个人来做。

nukf8bse

nukf8bse1#

不需要select(),你可以在buildByBranchName中使用分支作为所需的键:

.buildsByBranchName[.lastBuiltRevision.branch[0].name].buildNumber

输出:28694
如果你需要在更多的地方使用.lastBuiltRevision.branch[0].name,考虑设置一个变量:

.lastBuiltRevision.branch[0].name as $branch | .buildsByBranchName[$branch].buildNumber

相关问题