非常に明白な何かを見落とした場合の謝罪。私は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のサンプルは次のとおりです。JSONの残りを保持しながら、jq
を使用して"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