有一个JSON,如下所示
[
{
"first": "foo",
"last": "bar",
"roll": "32",
"subject": "maths"
},
{
"first": "joe",
"last": "mighty",
"roll": "31",
"subject": "english"
},
{
"first": "foo",
"last": "bar",
"roll": "32",
"subject": "english"
},
{
"first": "joe",
"last": "mighty",
"roll": "31",
"subject": "maths"
},
{
"first": "foo",
"last": "bar",
"roll": "32",
"subject": "science"
}
]unique_by(.first,.last,.roll)将删除其他主题条目。我希望将“subject”转换为包含源JSON数组中所有值的数组。如何使用jq来创建嵌套的主题数组,如下所示,
[
{
"first": "foo",
"last": "bar",
"roll": "32",
"subject": ["maths", "english", "science"]
},
{
"first": "joe",
"last": "mighty",
"roll": "31",
"subject": ["english", "maths"]
}
]发布于 2021-08-25 14:51:23
基于Oguz的出色答案的变体:
group_by(.first, .last, .roll)
| map( map(.subject) as $subject
| .[0]
| {first, last, roll, $subject})收集相关项目(按第一、最后和滚动分组),并将每个集合缩减为单个项目:
$subject.subject重写$subject键。https://stackoverflow.com/questions/68923838
复制相似问题