修改嵌套对象,但在此之后保持完整对象

时间:2019-04-02 03:57:16

标签: jq

我需要使用JQ修改JSON树中嵌套对象中的元素-数组-(例如:“ group-xyz”),但是一旦完成,我就需要整个对象以及修改后的数据。

目标是更新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 个答案:

答案 0 :(得分:1)

我已更改要求以适合更复杂的表格。要将用户添加到这些组的任何用户中,这就是我所做的:

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"
        ]
    }
]