一尘不染

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

json

如果我忽略了一些很明显的东西,就可以选择应用程序;我刚刚找到了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示例- 在保留其余JSON的同时,如何使用jqset "local": false

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

阅读 218

收藏
2020-07-27

共1个答案

一尘不染

您可以使用=运算符设置对象的值。 |=另一方面用于更新值。这是一个微妙但重要的区别。筛选器的上下文会更改。

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

.shipping.local = false

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

.shipping.local = false | .shipping.canada = false | .shipping.mexico = true
2020-07-27