Подтвердить что ты не робот

Как обновить одно значение в json-документе с помощью jq?

Апологию, если я упустил что-то очень очевидное; Я только что нашел jq и пытаюсь использовать его для обновления одного значения 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": "$"
    }
  }
}
4b9b3361

Ответ 1

Вы устанавливаете значения объекта с помощью оператора =. |=, с другой стороны, используется для обновления значения. Это тонкая, но важная разница. Изменяется контекст фильтров.

Поскольку вы устанавливаете свойство в постоянное значение, используйте оператор =.

.shipping.local = false

Просто помните, что при установке значения для свойства это необязательно должно существовать. Вы можете легко добавлять новые значения таким образом.

.shipping.local = false | .shipping.canada = false | .shipping.mexico = true