次のようなbashコンソールでフォーマットするためにJSON出力本文をきれいに印刷する方法
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これは応答本文ですください。
問題が見つかりました。応答ヘッダーに問題があります。 実際、次のような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フォーマットを強制できますか?