使用 Jq 将一个对象的 属性 插入另一个 属性

Use Jq to insert property of an object in another property

我有一个 json 文件,如下所示:

[
  {
    "account_id": 123, 
    "instances": [
      {"id": 1},
      {"id": 2}
    ]
  },
  {
    "account_id": 456, 
    "instances": [
      {"id": 1}
    ]
  }
]

我想将实例拼合到一个列表中,然后将 account_id 插入到每个实例中。这是我想要的结果。

[
  {"id": 1, "account_id": 123},
  {"id": 2, "account_id": 123},
  {"id": 1, "account_id": 456}
]

这是我在等待答案时想出的替代解决方案。

jq '.|map(.instances[]+{"account_id": .account_id})' file.json
jq '[.[] | .id = .instances[0].id | del(.instances)]' file.json

如果有更多实例,只需遍历所有实例以将 account_id 分配给每个实例:

jq '[.[] | .id = .instances[].id | del(.instances)]' file.json
                           ~~