小编典典

如何使用 jq 更新 json 文档中的单个值?

all

如果我忽略了一些非常明显的事情,请道歉;我刚刚发现jq并尝试使用它来更新一个 JSON 值而不影响周围的数据。

我想将curl结果通过管道传输到jq,更新一个值,并将更新后的 JSON 传输到curl -X PUT. 就像是

curl http://example.com/shipping.json | jq '.' field: value | curl -X PUT http://example.com/shipping.json

到目前为止,我已经使用 破解了它sed,但是在查看了一些|=操作符示例之后,jq我确信我不需要这些。

这是一个 JSON 示例——我将如何使用jqset "local": false,同时保留 JSON 的其余部分?

{
  "shipping": {
    "local": true,
    "us": true,
    "us_rate": {
      "amount": "0.00",
      "currency": "USD",
      "symbol": "$"
    }
  }
}

阅读 94

收藏
2022-08-27

共1个答案

小编典典

您可以使用=运算符设置对象的值。 |=另一方面用于更新值。这是一个微妙但重要的区别。过滤器的上下文发生变化。

由于您将属性设置为常量值,因此请使用=运算符。

.shipping.local = false

请注意,在为属性设置值时,它不一定必须存在。您可以通过这种方式轻松添加新值。

.shipping.local = false | .shipping.canada = false | .shipping.mexico = true
2022-08-27