1. ホーム
  2. json

[解決済み] jqを使用してjsonドキュメントの単一の値を更新するにはどうすればよいですか?

2022-04-26 09:47:07

質問

もし私が非常に明白なことを見落としていたら、申し訳ありません。 jq を使用して、周囲のデータに影響を与えることなく、1 つの 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のサンプルはこちらです。 jq を設定します。 "local": false JSONの残りの部分を維持したまま?

{
  "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