【问题标题】:Sort array on a nested property对嵌套属性的数组进行排序
【发布时间】:2021-03-04 20:57:36
【问题描述】:

我在一个文件中有这个 json

{
    "items" : [
        {
            "status" : {
                "phase": "Failed",
                "startTime": "2020-11-15T15:42:26Z"
            }
        },
        {
            "status" : {
                "environments": [
                    {
                        "dev": "test"
                    }
                ],
                "phase": "Running",
                "startTime": "2020-11-17T15:42:26Z"
            }
        },
        {
            "status" : {
                "environments": [
                    {
                        "dev": "test2"
                    }
                ],
                "phase": "Running",
                "startTime": "2020-11-10T15:42:26Z"
            }
        }
    ]
}

我想根据 startTime 排序这个 json,我想返回按最新日期排序的列表。 我试过这个查询 jq -r '.items[].status | sort_by(.startTime)'

但它给出了以下错误: jq: error (at <stdin>:4399): Cannot index string with string "startTime"

有什么帮助吗?

【问题讨论】:

    标签: arrays json sorting nested jq


    【解决方案1】:
    .items | sort_by(.status.startTime) | map(.status) | reverse
    

    地点:

    1. 取出.items
    2. 按.status.startTime 对项目进行排序(升序)
    3. 那么对于每个项目只保留状态
    4. 最后把列表倒过来

    输出:

    [
      {
        "environments": [
          {
            "dev": "test"
          }
        ],
        "phase": "Running",
        "startTime": "2020-11-17T15:42:26Z"
      },
      {
        "phase": "Failed",
        "startTime": "2020-11-15T15:42:26Z"
      },
      {
        "environments": [
          {
            "dev": "test2"
          }
        ],
        "phase": "Running",
        "startTime": "2020-11-10T15:42:26Z"
      }
    ]
    

    【讨论】:

      猜你喜欢
      • 2021-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-06
      相关资源
      最近更新 更多