Во-первых, давайте предположим, что мы знали, что индекс объекта с именем «Конфигурация управления» был $ i. Тогда, предполагая, что объект для вставки равен $ o, мы бы написали:
.[0:$i+1] + [$o] + .[$i+1:]
Таким образом, задача сводится к поиску $ i, что можно эффективно сделать следующим образом:
first(range(0;length) as $i
| select(.[$i].name=="Management Configuration")
| $i)
Заботясь о том, чтобы мы обрабатывали вероятность того, что объект, которого мы ожидаем встретить в массиве, нет, мы можем собрать кусочки следующим образом:
(first(range(0;length) as $i
| select(.[$i].name=="Management Configuration")
| $i) // null) as $i
| if $i then .[0:$i+1] + [$o] + .[$i+1:] else . end
Один из способов установить $o
будет в командной строке, например, вдоль линий:
jq --argjson o '....' -f insert.jq 1.json
IndexOf
Возможно, имеет смысл использовать следующее общее определение:
def indexof(f):
first(range(0;length) as $i
| select(.[$i]|f) | $i) // null;
Решение тогда становится:
indexof(.name=="Management Configuration") as $i
| if $i then .[0:$i+1] + [$o] + .[$i+1:] else . end