我有一个以 1:1 映射形式导出为 JSON 的 SQL 结果集。
例如
[
{
"subject": "Accounting",
"level": "A Level"
},
{
"subject": "Accounting",
"level": "IB"
},
{
"subject": "Accounting",
"level": "University"
},
{
"subject": "Accounting",
"level": "GCSE"
},
{
"subject": "Accounting",
"level": "Mentoring"
},
{
"subject": "Accounting",
"level": "13 Plus"
},
{
"subject": "Accounting",
"level": "11 Plus"
},
etc.....
Run Code Online (Sandbox Code Playgroud)
我想将这些级别合并为一个主题键,如下所示:
[
"Accounting": ["A Level", "IB", "University"],
"Foo": ["Foo Intro", "Foo Basics", "Intermediate Foo"]
]
Run Code Online (Sandbox Code Playgroud)
注意:没有匿名对象
我怎样才能用 jq 实现这一点?
给定的
$ jq '.' file.json
[
{
"subject": "Accounting",
"level": "A Level"
},
{
"subject": "Foo",
"level": "IB"
},
{
"subject": "Accounting",
"level": "University"
},
{
"subject": "Foo",
"level": "GCSE"
},
{
"subject": "Accounting",
"level": "Mentoring"
},
{
"subject": "Accounting",
"level": "13 Plus"
},
{
"subject": "Foo",
"level": "11 Plus"
}
]
Run Code Online (Sandbox Code Playgroud)
然后从Reshape 中大量借用汇总数据的 jq 数组
$ jq 'reduce .[] as $d (null; .[$d.subject] += [$d.level])' file.json
{
"Accounting": [
"A Level",
"University",
"Mentoring",
"13 Plus"
],
"Foo": [
"IB",
"GCSE",
"11 Plus"
]
}
Run Code Online (Sandbox Code Playgroud)
注意:外层是一个对象而不是一个数组(如您预期的输出 - 它似乎不是有效的 JSON)。
| 归档时间: |
|
| 查看次数: |
201 次 |
| 最近记录: |