【问题标题】:jq | return subset of data based on matched array elementjq |根据匹配的数组元素返回数据子集
【发布时间】:2018-03-07 23:26:28
【问题描述】:

我正在尝试使用 jq 解析以下 json 文件。我想返回该数据的子集。

  {
      "imageDetails": [
        {
          "imageSizeInBytes": 2066961,
          "imageDigest": "sha256:ff089cca12407adce49e70771a32c2fd48d53d8d3fb735cee430037e6b27c535123",
          "imageTags": [
            "test",
            "latest"
          ],
          "registryId": "98654010662132",
          "repositoryName": "testrepository",
          "imagePushedAt": 1520462286
        },
        {
          "imageSizeInBytes": 2066961,
          "imageDigest": "sha256:c30974de3423250382f5b33be01103c11de73459ceaedd789dff9b461532eb2dd55",
          "imageTags": [
            "test3"
          ],
          "registryId": "98654010662132",
          "repositoryName": "testrepository",
          "imagePushedAt": 1520462305
        },
        {
          "imageSizeInBytes": 2066961,
          "imageDigest": "sha256:05048eb6cc559e953e6c98afa0e71fd836c37a34563531487af2b5d1c9430570ff9",
          "imageTags": [
            "mytest1",
            "mytest2",
            "mytest3"
          ],
          "registryId": "98654010662132",
          "repositoryName": "testrepository",
          "imagePushedAt": 1520459886
        },
        {
          "imageSizeInBytes": 2066961,
          "imageDigest": "sha256:bf23ada8a14d1c70c476b4f39b9b849fd5191d8fc419312b3d1b8f59aa182b050e6",
          "imageTags": [
            "test3-latest"
          ],
          "registryId": "98654010662132",
          "repositoryName": "testrepository",
          "imagePushedAt": 1520462305
        },
        {
          "imageSizeInBytes": 2066961,
          "imageDigest": "sha256:a040f335556e783930905d0b7bd9f55f1400a2778e39983c3d1e3cc41643c090ee0",
          "imageTags": [
            "test2"
          ],
          "registryId": "98654010662132",
          "repositoryName": "testrepository",
          "imagePushedAt": 1520462304
        }
      ]
    }

具体来说,我想搜索“imageTags”,其中数组中的一个项目是“mytest1”。返回输出应该是字典块。像这样:

    {
      "imageSizeInBytes": 2066961,
      "imageDigest": "sha256:05048eb6cc559e953e6c98afa0e71fd836c37a34563531487af2b5d1c9430570ff9",
      "imageTags": [
        "mytest1",
        "mytest2",
        "mytest3"
      ],
      "registryId": "98654010662132",
      "repositoryName": "testrepository",
      "imagePushedAt": 1520459886
    }

任何帮助将不胜感激。

【问题讨论】:

    标签: jq


    【解决方案1】:

    查询的简单表述的关键是any/2

    .imageDetails[] | select(any(.imageTags[]; . == "mytest1"))
    

    【讨论】:

      猜你喜欢
      • 2013-02-19
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 2019-02-16
      • 1970-01-01
      相关资源
      最近更新 更多