jo
jo
— конструктор json
для командной строки.
Часто вижу, как коллеги в чатах перекидываются фрагментами запросов или
примерами вызовов API
, передавая json
в виде экранированных строк.
Выглядит это примерно так:
curl \
-X POST \
-H "Content-Type: application/json" \
-d "{\"foo\": {\"bar\": \"baz\"}}" \
https://httpbin.org/post
Замена внешних кавычек на одинарные здесь не является решением. Примеры таких
запросов генерируются http
-клиентом при отладке. Вывод копируется
и отправляется в чат.
Выглядит это страшно и нечитаемо. Поправить такой json
с первого раза без
ошибки сложно (невозможно).
Для простоты генерации и редактирования json
из командной строки
используйте jo
:
jo foo=$(jo bar=baz) | jq
Инструмент позволяет создавать json
“на ходу” и передавать его дальше на
обработку по конвейеру:
jo foo=$(jo bar=baz) |
curl \
-X POST \
-H "Content-Type: application/json" \
-d @- \
https://httpbin.org/post
jo
можно использовать совместно с grpcurl
:
jo f_string=foo f_int64=42 |
grpcurl \
-d @ \
grpcb.in:9001 \
grpcbin.GRPCBin.DummyUnary |
jq
Примеры
# int
jo foo=1 bar=2 | jq
# string
jo foo=faz bar=baz | jq
# nested
jo this=$(jo is=$(jo nested=json)) | jq
# bool
jo ok=true err=false | jq
# array
jo -p -a foo bar baz | jq