Comment puis-je mettre à jour une valeur unique dans un document json à l'aide de jq?
Appologies si j'ai oublié quelque chose de très évident; j'ai juste trouvé jq
et suis en train de l'utiliser pour mettre à jour une valeur JSON sans affecter les environs de données.
J'aimerais tuyau curl
résultat dans jq
, mise à jour d'une valeur, et le tuyau de la mise à jour du JSON à 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, j'ai piraté ensemble à l'aide de sed
, mais après avoir regardé quelques exemples de la |=
opérateur dans jq
je suis sûr que je n'ai pas besoin de ces.
Voici un JSON échantillon--comment puis-je 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 devez vous connecter pour publier un commentaire.
Vous définissez les valeurs d'un objet à l'aide de la
=
de l'opérateur.|=
sur l'autre main est utilisée pour mettre à jour une valeur. C'est un subtil mais la différence importante. Le contexte des changements de filtres.Puisque vous êtes à la définition d'une propriété à une valeur constante, l'utilisation de la
=
opérateur.Il suffit de noter que lors de la fixation d'une valeur à une propriété, il ne doit pas nécessairement exister. Vous pouvez ajouter de nouvelles valeurs facilement de cette façon.
"
avec elle, comme.shipping.local = "new place"
. Ainsi, l'ensemble de la commande seracurl http://example.com/shipping.json | jq '.shipping.local = "new place"'
. Sinon, vous recevrez des erreurs étranges.false
. Les valeurs n'ont pas à être des chaînes de caractères.false
. Quel est le problème?