Я пытаюсь разобрать некоторые json и поместить определенные разделы в переменные. Я думаю, что я не понимаю что-то о том, как работают переменные.
Json:
{
"resources": [
{
"type": "Microsoft.ApiManagement/service/apis"
},
{
"type": "Microsoft.ApiManagement/service/apis/schemas"
}
]
}
Затем с помощью этого jq:
.resources[] | select(.type == "Microsoft.ApiManagement/service/apis") as $apis | { types: [.type], apis: $apis}
я получаю это :
{
"types": [
"Microsoft.ApiManagement/service/apis"
],
"apis": {
"type": "Microsoft.ApiManagement/service/apis"
}
}
Когда я ожидал этого:
{
"types": [
"Microsoft.ApiManagement/service/apis",
"Microsoft.ApiManagement/service/apis/schemas"
],
"apis": {
"type": "Microsoft.ApiManagement/service/apis"
}
}
https://jqplay.org/s/4aeBOY9x6q
В соответствии с разделом переменных jq manual
Выражение exp как $ x | ... означает: для каждого значения выражения exp запустите остальную часть конвейера со всем исходным вводом, и для этого значения установите $ x. Таким образом, поскольку он функционирует как нечто вроде foreach l oop.
, что заставляет меня думать, что .type должен возвращать исходный набор, а не отфильтрованный результат, который я хранил в $ apis. Где разъединение?