尝试使用 JQ 转换 JSON 中过于复杂的对象数组

问题描述 投票:0回答:1

我有一个如下所示的 JSON 文档:

{
  "name": "My Team",
  "team size": [
    {
      "min": [
        {
          "Leader": 1
        },
        {
          "Followers": 5
        },
        {
          "point cost": 7
        }
      ]
    },
    {
      "max": [
        {
          "Leader": 1
        },
        {
          "Followers": 9
        },
        {
          "point cost": 11
        }
      ]
    }
  ]
}

我希望它看起来像这样:

{
    "name": "My Team",
    "team size": [
        {
            "size": "min",
            "Leader": 1,
            "Followers": 5,
            "point cost": 7
        },
        {
            "size": "max",
            "Leader": 1,
            "Followers": 9,
            "point cost": 11
        }
    ]
}

但是我很难接受。我知道它类似于

jq . '"team size" |= map(to_entries[] | .key + .values)
,但我的语法不正确。任何帮助将不胜感激。

json jq data-cleaning
1个回答
1
投票

这是许多方法之一:

.["team size"] |=
  (add
   | [ ({size: "min"} + (.min | add)),
       ({size: "max"} + (.max | add)) ] )

或更干燥:

.["team size"] |=
  (add
   | . as $in
   | reduce keys_unsorted[] as $k ([];
       . + [{size: $k} + ($in[$k]|add) ] ))
© www.soinside.com 2019 - 2024. All rights reserved.