Для побочного проекта я хочу отсортировать ключи JSON с помощью jq и найти следующее решение:
def add_property_prefix:
if .key == "beka" then "01__"+.key
elif .key == "alma" then "02__"+.key
elif .key == "paprika" then "03__"+.key
elif .key == "korte" then "04__"+.key
else .key end
;
def del_property_prefix:
.key | sub("^[0-9]{2}__"; "")
;
to_entries
| map({ key: add_property_prefix, value: .value })
| sort_by(.key)
| map({ key: del_property_prefix, value: .value })
| from_entries
И ввод JSON выглядит следующим образом:
{
"alma": 1,
"beka": 2,
"paprika": 3,
"korte": 4
}
( jq play link )
Хотя это работает, у меня более 10 клавиш, и из-за этого функция add_property_prefix
действительно ужасна.
Вопрос: есть ли способ сделать список сортировки менее избыточным?
Я думал о какой-то карте, но я не знаю, насколько это можно понять из более элегантного решения.