JQ-使用unique_by删除重复项

Sau*_*abh 3 json unique jq

我试图通过以下json从以下json中删除重复项id

{
  "Result": [
    {
      "name": "validation-of-art",
      "id": "12",
      "status": "passed",
      "duration": 4740302
    },
    {
      "name": "validation-of-art",
      "id": "12",
      "status": "passed",
      "duration": 272320
    },
    {
      "name": "validation-of-art",
      "id": "13",
      "status": "passed",
      "duration": 272320
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

jq -r 'unique_by(.Result.name)'
Run Code Online (Sandbox Code Playgroud)

还有 jq 'unique_by(.Result[].name)'

我遇到错误- Cannot index array with string "Result" 任何帮助将不胜感激。

jq1*_*727 7

这是一个示例,该示例消除了.Result使用unique_by(.name)

$ jq -M '.Result |= unique_by(.name)' data.json
{
  "Result": [
    {
      "name": "validation-of-art",
      "id": "12",
      "status": "passed",
      "duration": 4740302
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

如果这还不是您想要的,则可以轻松地对此进行概括。例如,为每个{name,id}可以使用的唯一对象保留一个对象

$ jq -M '.Result |= unique_by({name, id})' data.json
{
  "Result": [
    {
      "name": "validation-of-art",
      "id": "12",
      "status": "passed",
      "duration": 4740302
    },
    {
      "name": "validation-of-art",
      "id": "13",
      "status": "passed",
      "duration": 272320
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)