我有以下 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
来完成此操作?
我想要一个对象:
- 使用键“accounts”
- 包含“group”、“name”、“id”的元素
到目前为止,我已经尝试过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
}
]
}
关于json - 如何在JQ中展平多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76230610/