cats n dogs Ответов: 1

Добавить ключ к объекту json с помощью jq


Здравствуйте, у меня есть список ключей, по которым я перебираю и каждый раз, когда они текущие не найдены в объекте json, я хочу добавить его к объекту.

Что я уже пробовал:

Вот что я сделал до сих пор https://jqplay.org/s/risDCfxm5j

Проблема в том, что я не могу заставить его добавлять к объекту с каждой итерацией, он создает новый объект, я хочу добавить к тому же самому.

Вот желаемый результат

{
    "config-maps": [
    	{
    		"map-data": {},
    		"config-map-label": "some stuff",
    		"config-map-name": "some other stuff"
    	}
    ],
    "secrets": [{"aa":"*******"}],
    "$k": "toto",
    "$k": "test"
}



Кроме того, переменная k, по-видимому, не интерпретируется как переменная

1 Ответов

Рейтинг:
4

p e a k

Ключ вот в чем уменьшить.

Следующий вариант вашей программы jq выдает результат, показанный ниже:

reduce ("secrets","toto","test") as $k (.;
 if index($k) | not
 then  . + {($k): $k}
 else . end)

Выход:
{
  "config-maps": [
    {
      "map-data": {},
      "config-map-label": "some stuff",
      "config-map-name": "some other stuff"
    }
  ],
  "secrets": [
    {
      "aa": "*******"
    }
  ],
  "toto": "toto",
  "test": "test"
}


cats n dogs

Спасибо, вы гений, нигде в документах не упоминается ключевое слово "уменьшить".
Я собираюсь быть жадным и задать еще один вопрос, JQ, похоже, не в состоянии обрабатывать сложные переменные, например, если я хочу передать список в качестве переменной из моей оболочки script model="secrets toto"и --arg model "$model" => это приводит к "secrets toto": "secrets toto". Он интерпретируется как строка, во всяком случае, вокруг этого ?

p e a k

`сокращение` задокументировано в разделе "Дополнительные функции" официального руководства (https://stedolan.github.io/jq/manual/v1.6/). Аналогично с параметром командной строки `--argjson`.

League Of Jax

Это спасло мне жизнь, спасибо!!

cats n dogs

Эй, Вау, я восхищаюсь твоим терпением. Я все еще борюсь с бонусной частью взгляните пожалуйста https://rextester.com/NKG94186

p e a k

Что необходимо: уменьшить $модель[] как

cats n dogs

Совершенство. TY