У мене було подібне пов'язане питання: Що робити, якщо ви хочете повернути оригінальний формат об'єкта (з ключовими назвами, наприклад, FOO, BAR)?
Jq забезпечує to_entries
і from_entries
перетворює між об'єктами і масивами пар ключ-значення. Це разом з map
навколо вибору
Ці функції перетворюються між об'єктом і масивом пар ключ-значення. Якщо to_entries передається об'єкт, то для кожного запису k: v у вхідному масиві вихідний масив включає {"ключ": k, "значення": v}.
from_entries робить зворотне перетворення, а with_entries (foo) - це скорочення для to_entries | карта (foo) | from_entries, корисний для виконання певної операції з усіма ключами та значеннями об'єкта. from_entries приймає ключ, ключ, ім'я, ім'я, значення та значення як ключі.
jq15 < json 'to_entries | map(select(.value.location=="Stockholm")) | from_entries'
{
"FOO": {
"name": "Donald",
"location": "Stockholm"
},
"BAR": {
"name": "Walt",
"location": "Stockholm"
}
}
Використання with_entries
скорочення, це стає:
jq15 < json 'with_entries(select(.value.location=="Stockholm"))'
{
"FOO": {
"name": "Donald",
"location": "Stockholm"
},
"BAR": {
"name": "Walt",
"location": "Stockholm"
}
}