{
"name": "ford",
"availableVersions": [
{
"version": 111,
"count": 3
},
{
"version": 122,
"count": 2
},
{
"version": 133,
"count": 3
},
{
"version": 144,
"count": 1
}
],
"RealVersion": 155
}
{
"name": "bmw",
"availableVersions": [
{
"version": 244,
"count": 1
},
{
"version": 255,
"count": 3
} ],
"RealVersion": 120
}
У меня есть эта демонстрация. json файл сейчас if (name == 'ford')
(имя может быть переменной) Я хочу получить все версии, у которых count != 3
и, если все версии count == 3
, я хочу получить RealVersion ford, поэтому в этом случае вывод должен быть.
EXPECTED OUTPUT = [122 144 ]
Я использую инструмент jq для разбора файла json
Теперь, если все версии рассчитываются == 3
{
"name": "ford",
"availableVersions": [
{
"version": 111,
"count": 3
},
{
"version": 122,
"count": 3
},
{
"version": 133,
"count": 3
},
{
"version": 144,
"count": 3
}
],
"RealVersion": 155
}
{
"name": "bmw",
"availableVersions": [
{
"version": 244,
"count": 1
},
{
"version": 255,
"count": 3
} ],
"RealVersion": 120
}
Теперь в этом случае все версии версии == 3, поэтому теперь я хочу получить реальную версию 155 EXPECTED OUTPUT SHOULD BE 155
Я использую эту команду
cat demo | jq '.RealVersion as $RealVersion | select(.name == "bmw") | .availableVersions | map(select(.count != 3)) | if length > 0 then map(.version) else $RealVersion end'
, который работал нормально, но возвращает массив json, если имеется более одного элемента. Но я хочу сохранить его в обычном массиве. Я думаю, что если я не использую карту, то она будет работать. Я хочу вывод, чтобы я мог сохранить его в обычном массиве. Кто-нибудь может мне помочь с этим?