¿Cómo puedo actualizar un solo valor en un documento json usando jq?
Appologies si he pasado por alto algo muy obvio; acabo de encontrar jq
y estoy tratando de usarlo para actualizar un valor JSON sin afectar los datos circundantes.
Me gustaría canalizar un resultado curl
a jq
, actualizar un valor y canalizar el JSON actualizado a un curl -X PUT
. Algo así como
curl http://example.com/shipping.json | jq '.' field: value | curl -X PUT http://example.com/shipping.json
Hasta ahora he hackeado juntos usando sed
, pero después de mirar algunos ejemplos del operador |=
en jq
Estoy seguro de que no los necesito.
Aquí hay un JSON ejemplo sample ¿cómo usaría jq
para establecer "local": false
, conservando el resto del JSON?
{
"shipping": {
"local": true,
"us": true,
"us_rate": {
"amount": "0.00",
"currency": "USD",
"symbol": "$"
}
}
}
1 answers
Se establecen los valores de un objeto utilizando el operador =
. |=
por otro lado, se utiliza para actualizar un valor. Es una diferencia sutil pero importante. El contexto de los filtros cambia.
Ya que está configurando una propiedad a un valor constante, use el operador =
.
.shipping.local = false
Solo tenga en cuenta que cuando se establece un valor a una propiedad, no necesariamente tiene que existir. Puede agregar nuevos valores fácilmente de esta manera.
.shipping.local = false | .shipping.canada = false | .shipping.mexico = true
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-24 21:44:01