代码之家  ›  专栏  ›  技术社区  ›  Eric B.

按日期排序/筛选JQ中的多个对象

  •  0
  • Eric B.  · 技术社区  · 6 年前

    我尝试使用JQ在NexusAPI查询中查找最新的工件。现在,我的JSON输出如下所示:

    {
      "items" : [ {
        "downloadUrl" : "https://nexus.ama.org/repository/Snapshots/org/sso/browser-manager/1.0-SNAPSHOT/browser-manager-1.0-20180703.144121-1.jar",
        "path" : "org/sso/browser-manager/1.0-SNAPSHOT/browser-manager-1.0-20180703.144121-1.jar",
        "id" : "V0FEQS1TbmFwc2hvdHM6MzhjZDQ3NTQwMTBkNGJhOTY1N2JiOTEyMTM1ZGRjZWQ",
        "repository" : "Snapshots",
        "format" : "maven2",
        "checksum" : {
          "sha1" : "7ac324905fb1ff15ef6020f256fcb5c9f54113ca",
          "md5" : "bb25c483a183001dfdc58c07a71a98ed"
        }
      }, {
        "downloadUrl" : "https://nexus.ama.org/repository/Snapshots/org/sso/browser-manager/1.0-SNAPSHOT/browser-manager-1.0-20180703.204941-2.jar",
        "path" : "org/sso/browser-manager/1.0-SNAPSHOT/browser-manager-1.0-20180703.204941-2.jar",
        "id" : "V0FEQS1TbmFwc2hvdHM6MzhjZDQ3NTQwMTBkNGJhOWM4YjQ0NmRjYzFkODkxM2U",
        "repository" : "Snapshots",
        "format" : "maven2",
        "checksum" : {
          "sha1" : "b4ba2049ea828391c720f49b6668a66a8b0bca9c",
          "md5" : "6757c55c0e6d933dc90e398204cca966"
        }
      } ],
      "continuationToken" : null
    }
    

    我已设法使用JQ将数据重新打包为:

    .items[] | { "id" : .id,  "date" : (.path |  scan("[0-9]{8}\\.[0-9-]*")) } 
    

    输出:

    {
      "id": "V0FEQS1TbmFwc2hvdHM6MzhjZDQ3NTQwMTBkNGJhOTY1N2JiOTEyMTM1ZGRjZWQ",
      "date": "20180703.144121-1"
    }
    {
      "id": "V0FEQS1TbmFwc2hvdHM6MzhjZDQ3NTQwMTBkNGJhOWM4YjQ0NmRjYzFkODkxM2U",
      "date": "20180703.204941-2"
    }
    

    现在我有点费劲想弄清楚这两个JSON对象中哪一个是最新的。如何按日期排序并提取该对象的ID?

    有没有更好的方法来筛选/排序这些数据?我的示例在JSON响应中只有2个项目[],但它们的数量可能更大。

    1 回复  |  直到 6 年前
        1
  •  1
  •   peak    6 年前

    sort_by/1

    .items 
    | map({ "id" : .id,  "date" : (.path |  scan("[0-9]{8}\\.[0-9-]*")) })
    | sort_by(.date)
    | .[-1]
    

    .[-1]

    {
      "id": "V0FEQS1TbmFwc2hvdHM6MzhjZDQ3NTQwMTBkNGJhOWM4YjQ0NmRjYzFkODkxM2U",
      "date": "20180703.204941-2"
    }