我有以下 JSON:
{
"accounts": [
{
"group": 1,
"users": [
{
"name": "John",
"id": 1
},
{
"name": "Jane",
"id": 2
}
]
},
{
"group": 2,
"users": [
{
"name": "Bob",
"id": 3
},
{
"name": "Mary",
"id": 3
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我希望输出看起来像这样:
{
"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
}
]
}
Run Code Online (Sandbox Code Playgroud)
我该如何使用jq来实现这一目标?
我想要一个对象:
到目前为止我已经尝试过jq --raw-output '.accounts[].group, .accounts[].users[].name, .accounts[].users[].id',但它给了我以下内容:
1
2
John
Jane
Bob
Mary
1
2
3
3
Run Code Online (Sandbox Code Playgroud)
将数组的每个项目添加.users到单个{group}项目中。.accounts使用为数组中的所有项目执行此操作map,并使用 update-assignment 就地执行此操作|=:
jq '.accounts |= map({group} + .users[])' file.json
Run Code Online (Sandbox Code Playgroud)
{
"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
}
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |