使用jq从嵌套数组获取唯一值

时间:2018-08-23 13:34:03

标签: json command-line terminal jq

尝试获取存储在每个组的项目数组中的唯一值。总是混在一起...

我的JSON看起来像这样:

{
  "start": 1534425916,
  "stop": 1535030716,
  "groups": [
    {
      "group": "transmission",
      "data": {
        "events": 665762,
      },
      "items": [
        {
          "item": "manualni",
          "data": {
            "events": 389158,
          }
        },
        {
          "item": "automaticka",
          "data": {
            "events": 276604,
          }
        }
      ]
    },
    {
      "group": "vat",
      "data": {
        "events": 671924,
      },
      "items": [
        {
          "item": "ne",
          "data": {
            "events": 346221,
          }
        },
        {
          "item": "ano",
          "data": {
            "events": 325703,
          }
        }
      ]
    }
  ]
}

期望的结果如下:

{
  "id": "transmission",
  "value": [
    "manualni",
    "automaticka",
  ]
}
{
  "id": "vat",
  "value": [
    "ne",
    "ano"
  ]
}

在命令行上尝试使用此过滤器:

| jq '{id: .groups[].group, value: [.groups[].items[].item]}'

导致上述混合结果的结果:

{
  "id": "transmission",
  "value": [
    "manualni",
    "automaticka",
    "ne",
    "ano"
  ]
}
{
  "id": "vat",
  "value": [
    "manualni",
    "automaticka",
    "ne",
    "ano"
  ]
}

您知道如何在此处接收唯一值吗?预先感谢!

1 个答案:

答案 0 :(得分:0)

这将获得所需的结果。我认为。[]下的manual条目解释了它为什么起作用。

jq '.groups[] | {"id": .group, "value": [.items[].item]}'