【发布时间】:2021-01-31 00:25:02
【问题描述】:
我正在学习 jq 的高级概念。我用查尔斯卓别林的一些电影制作了一个带有数组的小 json……嗯,这个数组在 json 中:
[
{
"title": "The Great Dictator",
"year": 1940,
"country": "USA",
"genre": "political satire"
},
{
"title": "Modern Times ",
"year": 1936,
"country": "USA",
"genre": "comedy"
},
{
"title": "The Gold Rush",
"year": 1925,
"country": "USA",
"genre": "comedy"
},
{
"title": "The Kid",
"year": 1921,
"country": "USA",
"genre": "drama"
}
]
我想将类型转换或重塑为一个对象,其中以流派为键,电影列表为数组(喜剧在数组中只有两个元素):
{
"comedy": [
{
"title": "Modern Times ",
"year": 1936,
"country": "USA"
},
{
"title": "The Gold Rush",
"year": 1925,
"country": "USA"
}
],
"political satire": [
{
"title": "The Great Dictator",
"year": 1940,
"country": "USA"
}
],
"drama": [
{
"title": "The Kid",
"year": 1921,
"country": "USA"
}
]
}
但我做不到。我尝试第一步创建一个以流派和 foo 字符串为 var 的对象,但它失败了:cat c.json | jq '{.[] | (.genre): "foo" ]}'
【问题讨论】:
-
我发现这个问题stackoverflow.com/questions/42427725/… 但
cat c.json | jq 'INDEX(.genre)'喜剧条目只有元素。 -
和
cat c.json | jq '[.[] | {(.genre): [.]}] | add'和之前的评论一样...喜剧只有一部电影。