Как преобразовать вложенные объекты с помощью jq? - PullRequest
0 голосов
/ 04 июля 2019

У меня есть объект json вида:

{
  ...
  objectx: {
    nested_obj1: {
      key1: value1
    },
    nested_obj2: {
      key2: value2
    },
    ...
  },
  ...
}

.Мне нужно добавить keyX: valueX ко всем nested_obj в objectx, используя jq.

Я пытался применить фильтр карты, используя .objectx | map(.+{keyX: valueX}), но не мог понять, как сохранить этот отфильтрованный список в исходном объекте json.Как мне этого добиться?

1 Ответ

2 голосов
/ 05 июля 2019

Выберите объекты, которые вы хотите обновить (значения объекта objectx) и установите желаемое значение. map предназначен для работы с массивами, а не с объектами. Вместо этого можно использовать map_values.

.objectx |= map_values(.keyX = $valueX)

Лично я предпочитаю сделать это:

.objectx[].keyX = $valueX

Обратите внимание, что использование [] для объекта даст все значения этого объекта.

...