如果我忽略了一些非常明显的事情,请道歉;我刚刚发现jq并尝试使用它来更新一个 JSON 值而不影响周围的数据。
jq
我想将curl结果通过管道传输到jq,更新一个值,并将更新后的 JSON 传输到curl -X PUT. 就像是
curl
curl -X PUT
curl http://example.com/shipping.json | jq '.' field: value | curl -X PUT http://example.com/shipping.json
到目前为止,我已经使用 破解了它sed,但是在查看了一些|=操作符示例之后,jq我确信我不需要这些。
sed
|=
这是一个 JSON 示例——我将如何使用jqset "local": false,同时保留 JSON 的其余部分?
"local": false
{ "shipping": { "local": true, "us": true, "us_rate": { "amount": "0.00", "currency": "USD", "symbol": "$" } } }
您可以使用=运算符设置对象的值。 |=另一方面用于更新值。这是一个微妙但重要的区别。过滤器的上下文发生变化。
=
由于您将属性设置为常量值,因此请使用=运算符。
.shipping.local = false
请注意,在为属性设置值时,它不一定必须存在。您可以通过这种方式轻松添加新值。
.shipping.local = false | .shipping.canada = false | .shipping.mexico = true