Ответ 1
Используйте следующий подход jq:
jq '[.[] | .["fruit2"] = .veg | .["job"] = .worker | del(.veg, .worker)]' file
Выход:
[
{
"fruit": "strawberry",
"fruit2": "apple",
"job": "gardener"
}
]
Это должно быть достаточно просто... Я хочу переименовать несколько ключей (в идеале с помощью jq), что бы я ни делал, похоже, ошибка. Вот пример json ниже:
[
{
"fruit": "strawberry",
"veg": "apple",
"worker": "gardener"
}
]
Я бы хотел переименовать ключ veg в fruit2 (или, как ни крути), а также рабочий ключ на работу.
Я понимаю, что это возможно в Sed, но я пытаюсь справиться с JQ
Используйте следующий подход jq:
jq '[.[] | .["fruit2"] = .veg | .["job"] = .worker | del(.veg, .worker)]' file
Выход:
[
{
"fruit": "strawberry",
"fruit2": "apple",
"job": "gardener"
}
]
Ключ (:-) is with_entries. Например, для одного объекта:
with_entries(if .key == "veg" then .key = "fruit2" else . end)
В вашем случае, поскольку у вас есть массив объектов, вы можете обернуть это в map( ... )
.