我有以下JSON:

{
  "accounts": [
    {
      "group": 1,
      "users": [
        {
          "name": "John",
          "id": 1
        },
        {
          "name": "Jane",
          "id": 2
        }
      ]
    },
    {
      "group": 2,
      "users": [
        {
          "name": "Bob",
          "id": 3
        },
        {
          "name": "Mary",
          "id": 3
        }
      ]
    }
  ]
}

我希望输出如下所示:

{
  "accounts": [
    {
      "group": 1,
      "name": "John",
      "id": 1
    },
    {
      "group": 1,
      "name": "Jane",
      "id": 2
    },
    {
      "group": 2,
      "name": "Bob",
      "id": 3
    },
    {
      "group": 2,
      "name": "Mary",
      "id": 3
    }
  ]
}

我如何使用jq来实现这一点?

我想要一件物品:

  1. 关键字为"Account"
  2. 带有"group"、"name"、"id"的元素

到目前为止,我已经try 了jq --raw-output '.accounts[].group, .accounts[].users[].name, .accounts[].users[].id'次,但它给了我以下几点:

1
2
John
Jane
Bob
Mary
1
2
3
3

推荐答案

.users数组中的每一项添加到单个{group}项中.使用map.accounts数组中的所有项执行更新操作,并使用更新赋值|=就地执行操作:

jq '.accounts |= map({group} + .users[])' file.json
{
  "accounts": [
    {
      "group": 1,
      "name": "John",
      "id": 1
    },
    {
      "group": 1,
      "name": "Jane",
      "id": 2
    },
    {
      "group": 2,
      "name": "Bob",
      "id": 3
    },
    {
      "group": 2,
      "name": "Mary",
      "id": 3
    }
  ]
}

Demo

Json相关问答推荐

我可以使用JQ来缩小数组中的json对象的范围吗?

Jolt变换将字段移动到数组的每个元素中

PowerShell:使用JSON原生的Short命令处理JSON?

如何使用PowerShell从ExchangeOnline命令执行中获得JSON输出

在 json 对象中存储多个键:值对

迭代powershell双维json对象

Spark-SQL中的from_unixtime函数未能给出正确的输出

使用 map_values Select 包含空格的字符串未按预期工作

将来自 Golang 的 JSON API 调用响应输出到 nextjs 前端

通过sql查询读取嵌套Json

Rails 控制器无需编码即可渲染 json

PowerShell - 如何迭代 PSCustomObject 嵌套对象?

为什么在我们有 json_encode 时使用 CJSON 编码

苗条的 JSON 输出

Rails 中奇怪的 JSON Javascript 问题

Spring Security 和 JSON 身份验证

gson:将 null 视为空字符串

waitUntilAllTask​​sAreFinished 错误 Swift

从 JSON 创建 Hashtable

使用 application/json 优于 text/plain 的优势?