Как красиво напечатать тело вывода JSON, чтобы отформатировать его в консоли bash, например
macbookproloreto:~ admin$ echo '{"foo": "lorem", "bar": "ipsum"}' | python -m json.tool
{
"bar": "ipsum",
"foo": "lorem"
}
Моя команда выглядит сейчас
http --session=cookies.txt --pretty all --json --print=b --style=xcode "https://myapi.company.com | python -m json.tool
Направлена ли опция --pretty
на красивую печать тела вывода? Кажется, что он не украшает тело вывода, вместо этого он печатает json как обычный текст.
'{"foo": "lorem", "bar": "ipsum"}'
Это работает из коробки:
@jkbrzt да, но это не ответ body
. Кажется, это не красивое тело, а только headers
.
@loretoparisi это тело ответа, см. http://httpbin.org/get
Хорошо, я нашел проблему, что-то не так в заголовках ответов. На самом деле, если я попробую хорошо отформатировать тело ответа в формате json, например:
http --session=cookies.txt --pretty all --json --print=b --style=xcode "https://api.spotify.com/v1/tracks/0eGsygTp906u18L0Oimnem"
оно работает.
Когда заголовки ответа http text/plain
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 1996
Content-Type: text/plain; charset=utf-8
результирующее форматирование является простым.
HTTPie просматривает заголовок ответа Content-Type
. Если это text/plain
, то никакого специального форматирования не происходит. Предоставленный вами URL-адрес возвращает Content-Type: application/json; charset=utf-8
поэтому он правильно отформатирован и выделен как JSON.
@jkbrzt точно. На самом деле проблема заключалась в том, что заголовки сервера были text/plain
а тело представляло собой текст, отформатированный как тело json (хорошо отформатированный json). В основном заголовок ответа Content-Type
не application/json
. Может ли HTTPie
принудительно форматировать json в этих случаях?
Самый полезный комментарий
@jkbrzt точно. На самом деле проблема заключалась в том, что заголовки сервера были
text/plain
а тело представляло собой текст, отформатированный как тело json (хорошо отформатированный json). В основном заголовок ответаContent-Type
неapplication/json
. Может лиHTTPie
принудительно форматировать json в этих случаях?