Appologies si j'ai oublié quelque chose de très évident; Je viens de trouver jq
et j'essaie de l'utiliser pour mettre à jour une valeur JSON sans affecter les données environnantes.
Je voudrais canaliser un résultat curl
dans jq
, mettre à jour une valeur et diriger le JSON mis à jour vers un curl -X PUT
. Quelque chose comme
curl http://example.com/shipping.json | jq '.' field: value | curl -X PUT http://example.com/shipping.json
Jusqu'à présent, je l'ai piraté ensemble en utilisant sed
, mais après avoir examiné quelques exemples du |=
opérateur dans jq
je suis sûr de ne pas en avoir besoin.
Voici un exemple JSON - comment utiliser jq
pour définir "local": false
, tout en préservant le reste du JSON?
{
"shipping": {
"local": true,
"us": true,
"us_rate": {
"amount": "0.00",
"currency": "USD",
"symbol": "$"
}
}
}
Vous définissez les valeurs d'un objet à l'aide de la commande =
_ opérateur. |=
permet par contre de mettre à jour une valeur. C'est une différence subtile mais importante. Le contexte des filtres change.
Puisque vous définissez une propriété sur une valeur constante, utilisez le =
_ opérateur.
.shipping.local = false
Notez simplement que lorsque vous définissez une valeur sur une propriété, celle-ci ne doit pas nécessairement exister. Vous pouvez facilement ajouter de nouvelles valeurs de cette façon.
.shipping.local = false | .shipping.canada = false | .shipping.mexico = true