json - 如何使用 jq 命令向 JSON 对象添加字段?

标签 json jq

我有这个 JSON 数据:

{
    "success": true,
    "module": {
        "data": {
            "item_i77f664a2": {
                "id": "i77f664a2",
                "tag": "item",
                "fields": {
                    "cartItemId": 2012636322
                },
                "type": "biz"
            }
        }
    }
}

我想在 {"operation":"delete"} 正下方添加 cartItemId,然后将 JSON 数据保存到文件中。我想要的结果是这样的:
{
    "success": true,
    "module": {
        "data": {
            "item_i77f664a2": {
                "id": "i77f664a2",
                "tag": "item",
                "fields": {
                    "cartItemId": 2012636322,
                    "operation": "delete"
                },
                "type": "biz"
            }
        }
    }
}

这是我尝试过的:
jq '.module.data.item_i77f664a2.fields + {"operation":"delete"}' > data.json

但它不会像上面那样保存带有我想要的输出的 JSON 数据。我如何解决它 ?

最佳答案

这种类型的更新是 += 的魔力发挥作用的地方。根据您的输入,以下调用:

jq '.module.data.item_i77f664a2.fields += {"operation":"delete"}'

产生你想要的输出:
{
  "success": true,
  "module": {
    "data": {
      "item_i77f664a2": {
        "id": "i77f664a2",
        "tag": "item",
        "fields": {
          "cartItemId": 2012636322,
          "operation": "delete"
        },
        "type": "biz"
      }
    }
  }
}

但是,我不确定这会在类似情况下产生您想要的结果,因为您已经引用了“item_i77f61ee2”。

关于json - 如何使用 jq 命令向 JSON 对象添加字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49632521/

相关文章:

javascript - 每个 div 添加 2 个 json 对象

java - 仅使用字符串和值解析 JSON 对象

amazon-web-services - 如何将引号添加到 jq 输出以创建 kubectl secret 的 secret

json - 如何使用 JQ 简化 JSON 对象?

javascript - 将数据加载到我不知道列的数据表中

Java-根据键值处理Json数组

json - 如何使用世界天气在线API

json - 如何根据JMESPath中的两个条件选择数组中的元素?

json - 如何使用 jq 修改嵌套对象

json - 当并非所有子对象都有选择器字段时选择