【问题标题】:Getting unique values from nested Array using jq使用 jq 从嵌套数组中获取唯一值
【发布时间】:2018-08-23 13:34:03
【问题描述】:

尝试为每个组获取存储在 items 数组中的唯一值。不知何故,它总是混合在一起......

我的 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"
  ]
}

知道如何在这里接收唯一值吗?提前致谢!

【问题讨论】:

    标签: json command-line terminal jq


    【解决方案1】:

    这会得到想要的结果。我认为 .[] 下的 manual 条目解释了它的工作原理。

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

    【讨论】:

      猜你喜欢
      • 2021-05-31
      • 2020-01-24
      • 2018-01-27
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      相关资源
      最近更新 更多