我有以下JSON;
[
{
"id": 1,
"start": "2022-06-20",
"result": 24
},
{
"id": 2,
"start": "2022-06-21",
"result": 56
},
{
"id": 3,
"start": "2022-06-21",
"result": 78
}
]我希望使用JQ、dimension和date向上面的每个数组添加2个新值,但是date需要是现有键值start的副本。预期产出如下:
[
{
"id": 1,
"start": "2022-06-20",
"result": 24,
"date": "2022-06-20",
"dimension": "new"
},
{
"id": 2,
"start": "2022-06-21",
"result": 56,
"date": "2022-06-21",
"dimension": "new"
},
{
"id": 3,
"start": "2022-06-21",
"result": 78,
"date": "2022-06-21",
"dimension": "new"
}
]我目前拥有的jq可以添加新的键dimension,但是我不知道如何复制start -> date
jq '.[] += {"dimension": "new"}' input.json谢谢你的帮助
发布于 2022-06-21 16:09:32
只需创建新的键/值对即可。
jq 'map(.date = .start | .dimension = "new")' input.json发布于 2022-06-21 16:55:10
您可能尝试了以下几种方法:
.[] += { date: .start, dimension: "new" } // WRONG但这并不完全正确,因为.是数组,而不是数组的元素。您可以使用|=作为调理器。
.[] |= ( . += { date: .start, dimension: "new" } )但我会用map代替。
map( . += { date: .start, dimension: "new" } )或者,
. += { date: .start, dimension: "new" }也可以使用
.date = .start | .dimension: "new"所以你可以用
.[] |= ( .date = .start | .dimension: "new" )或
map( .date = .start | .dimension = "new" )https://stackoverflow.com/questions/72703865
复制相似问题