У меня есть JSON-файл, который выглядит следующим образом (грубая схемы):JQ: выберите не понижая элементы из массива
[{
"custom_variables": [
{
"name": "xxx",
"value": "xxx"
},
{
"name": "xxx",
"value": "xxx"
},
{
"name": "profile_id",
"value": "123"
}
],
// many fields
"xxx": "xxx",
"xxx": "xxx",
"xxx": "xxx"
}]
Я использую JQ, чтобы извлечь все поля из объекта верхнего уровня. Поле custom_variables представляет собой массив объектов с именем и значением.
Я хочу извлечь конкретный объект из custom_variables, учитывая его имя.
Так что я делаю это:
jq 'map(
{
xxx: .xxx,
xxx: .xxx,
xxx: .xxx,
xxx: .custom_variables | .[] | select(.name == "variable_name")
}
)'
Это почти работает; он получает переменную, которую я хочу, когда она существует, но когда она этого не делает (или если custom_variables сама не делает этого), она потеряет весь объект верхнего уровня. Поэтому, в конце концов, я получаю меньше объектов, чем я вставлял в скрипт.
Как я могу просто вернуть значение null, если я не нахожу это поле, но сохраняю остальную часть данных?