我一直在使用jq命令,我想在下面的JSON中搜索特定的字符串SEARCH-TEXT,然后在没有值LATEST的情况下输出键name:中的父值.我try 了不同的命令,但我做到了这一点:

https://jqplay.org/s/b3PEBBq8r6G

预期结果:NOT-LATEST

有人能帮我解决这个问题吗?

{
  "count": 685,
  "next": "https://hub.docker.com/v2/repositories/grafana/grafana/tags?page=2",
  "previous": null,
  "results": [
    {
      "creator": 4132603,
      "id": 190096972,
      "images": [
        {
          "architecture": "amd64",
          "features": "",
          "variant": null,
          "digest": "SEARCH-TEXT",
          "os": "linux",
          "os_features": "",
          "os_version": null,
          "size": 91402044,
          "status": "active",
          "last_pulled": "2022-07-11T00:19:44.535475Z",
          "last_pushed": "2022-06-28T14:15:09.891118Z"
        }
      ],
      "last_updated": "2022-06-28T14:15:10.331474Z",
      "last_updater": 2978857,
      "last_updater_username": "grafanaci",
      "name": "LATEST",
      "repository": 135617,
      "full_size": 91402044,
      "v2": true,
      "tag_status": "active",
      "tag_last_pulled": "2022-07-11T04:34:43.293126Z",
      "tag_last_pushed": "2022-06-28T14:15:10.331474Z"
    },
    {
      "creator": 2978857,
      "id": 148674560,
      "images": [
        {
          "architecture": "amd64",
          "features": "",
          "variant": null,
          "digest": "SEARCH-TEXT",
          "os": "linux",
          "os_features": "",
          "os_version": null,
          "size": 116299353,
          "status": "active",
          "last_pulled": "2022-07-11T06:32:32.095452Z",
          "last_pushed": "2022-07-08T23:02:18.104164Z"
        }
      ],
      "last_updated": "2022-07-08T23:02:18.806479Z",
      "last_updater": 2978857,
      "last_updater_username": "grafanaci",
      "name": "NOT-LATEST",
      "repository": 135617,
      "full_size": 116299353,
      "v2": true,
      "tag_status": "active",
      "tag_last_pulled": "2022-07-11T06:32:32.095452Z",
      "tag_last_pushed": "2022-07-08T23:02:18.806479Z"
    }
  ]
}

推荐答案

看起来您需要一个and运算符,例如

jq -r '.results[] | select(.name!="LATEST" and .images[].digest=="SEARCH-TEXT")| .name'

它返回

100

Demo

Json相关问答推荐

JOLT拉平数组

PowerShell:将Invoke-WebRequest与变量一起使用

如何在Vega中使标记的符号在鼠标指针悬停时可点击

用于参考的Jolt变换

合并2个嵌套词典

如何强制仅有一个元素的数组在JSON中生成方括号

如何将复杂的 JSON 反序列化为 Rust 类型?

将来自 Golang 的 JSON API 调用响应输出到 nextjs 前端

jq json - 按键名 Select

使用带有逗号的字段名称构建 struct

使用 Jolt 变换将平面 json 转换为具有多个数组的嵌套 Json

如何从 JSON 中获取数据并通过 vb6 在网格中显示

为什么在测试 RSPEC 时 JBuilder 不返回 JSON 中的响应正文

Django - 异常处理最佳实践和发送自定义错误消息

在 JSON.stringify() 的输出中隐藏空值

JSON.stringify 不会转义?

如何从 BindingResult 获取控制器中的错误文本

使用 JSON.NET 序列化/反序列化对象字典

为什么 jqXHR.responseText 返回字符串而不是 JSON 对象?

是否有一个 PHP 函数只在双引号而不是单引号中添加斜杠