Я ищу кого-то, кто мог бы дать мне подсказку с jq здесь - кажется, я чего-то упускаю.
Мой JSON источник будет похож на это:
[
{
"cluster": "one",
"slots": [
{
"instances": [
{
"number": 0,
"services": [
{
"name": "A",
"unhealthy": 0,
"healthy": 4
},
{
"name": "B",
"unhealthy": 2,
"healthy": 2
}
]
},
{
"number": 1,
"services": [
{
"name": "B",
"unhealthy": 0,
"healthy": 6
},
{
"name": "C",
"unhealthy": 0,
"healthy": 2
}
]
}
]
}
]
},
{
"cluster": "two",
"slots": [
{
"instances": [
{
"number": 1,
"services": [
{
"name": "A",
"unhealthy": 1,
"healthy": 9
},
{
"name": "C",
"unhealthy": 0,
"healthy": 10
}
]
},
{
"number": 0,
"services": [
{
"name": "B",
"unhealthy": 0,
"healthy": 9
},
{
"name": "D",
"unhealthy": 0,
"healthy": 14
}
]
}
]
}
]
}
]
Мне нужно было бы новое поле «статус» в каждой внутренней коллекции как сумма «здоровых» и «нездоровых» состояний, например:
[
{
"cluster": "one",
"slots": [
{
"instances": [
{
"number": 0,
"services": [
{
"name": "A",
"unhealthy": 0,
"healthy": 4,
"status": 4
},
{
"name": "B",
"unhealthy": 2,
"healthy": 2,
"status": 4
}
]
},
{
"number": 1,
"services": [
{
"name": "B",
"unhealthy": 0,
"healthy": 6,
"status": 6
},
{
"name": "C",
"unhealthy": 0,
"healthy": 2,
"status": 2
}
]
}
]
}
]
},
{
"cluster": "two",
"slots": [
{
"instances": [
{
"number": 1,
"services": [
{
"name": "A",
"unhealthy": 1,
"healthy": 9,
"status": 10
},
{
"name": "C",
"unhealthy": 0,
"healthy": 10,
"status": 10
}
]
},
{
"number": 0,
"services": [
{
"name": "B",
"unhealthy": 0,
"healthy": 9,
"status": 9
},
{
"name": "D",
"unhealthy": 0,
"healthy": 14,
"status": 14
}
]
}
]
}
]
}
]
Есть ли способ итерировать таким образом:
jq '.[].slots[].instances[].services[] += { "status": ($iterator.healthy + $iterator.unhealthy) }'
До сих пор во всех моих попытках я не мог получить доступ к элементам на том же уровне для расчета ... или остальным мои данные были сброшены.