Httpie: Красивый принт JSON Body

Созданный на 13 нояб. 2015  ·  6Комментарии  ·  Источник: httpie/httpie

Как красиво напечатать тело вывода 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 точно. На самом деле проблема заключалась в том, что заголовки сервера были text/plain а тело представляло собой текст, отформатированный как тело json (хорошо отформатированный json). В основном заголовок ответа Content-Type не application/json . Может ли HTTPie принудительно форматировать json в этих случаях?

Все 6 Комментарий

Это работает из коробки:

screen shot 2016-01-01 at 6 58 34 pm

@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.

screen shot 2016-01-03 at 6 58 33 pm

@jkbrzt точно. На самом деле проблема заключалась в том, что заголовки сервера были text/plain а тело представляло собой текст, отформатированный как тело json (хорошо отформатированный json). В основном заголовок ответа Content-Type не application/json . Может ли HTTPie принудительно форматировать json в этих случаях?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги