изменить вложенный объект, но сохранить полный объект после - PullRequest
0 голосов
/ 02 апреля 2019

Мне нужно изменить элемент --an array-- (например, "group-xyz") внутри вложенного объекта в дереве JSON, используя JQ, но как только это будет сделано, мне потребуется весь объект обратно с измененными данными.

Цель - обновить дерево JSON и сохранить его полностью. например: добавить элемент массива, пустой массив и т. д.

{
  "group-abc": {"users": ["tina.turner"]},
  "group-def": {"users": ["someone.else"]},
  "group-xyz": {"users": ["that.thing"]
}

Тогда я заинтересован в возвращении объекта, подобного этому:

{
  "group-abc": {"users": ["tina.turner"]},
  "group-def": {"users": []},
  "group-xyz": {"users": ["that.thing","well.done"]
}

1 Ответ

1 голос
/ 02 апреля 2019

Я изменил свои требования, чтобы соответствовать более сложной форме.Чтобы добавить пользователя к любому из пользователей этих групп, я сделал следующее:

jq '. |= map( if ( .group=="abc") then .users+=["final.answer",] else . end)' source.json

, что дало результат

[
    {
        "group": "abc",
        "users": [
            "user1",
            "user2",
            "final.answer"
        ]
    },
    {
        "group": "def",
        "users": [
            "user4",
            "user5"
        ]
    }
]
...