So drucken Sie einen JSON-Ausgabetext hübsch aus, um ihn in der Bash-Konsole zu formatieren wie
macbookproloreto:~ admin$ echo '{"foo": "lorem", "bar": "ipsum"}' | python -m json.tool
{
"bar": "ipsum",
"foo": "lorem"
}
Mein Befehl sieht jetzt so aus
http --session=cookies.txt --pretty all --json --print=b --style=xcode "https://myapi.company.com | python -m json.tool
Zielt die Option --pretty
darauf ab, den Ausgabekörper hübsch zu drucken? Es scheint den Ausgabetext nicht zu verschönern, stattdessen wird das Json als Klartext ausgegeben
'{"foo": "lorem", "bar": "ipsum"}'
Das funktioniert out-of-the-box:
@jkbrzt ja, aber das ist nicht die Antwort body
. Es scheint, dass es nicht den Körper hübsch macht, sondern nur das headers
.
@loretoparisi ist der Antworttext, siehe http://httpbin.org/get
Ok, ich habe das Problem gefunden, es stimmt etwas in den Antwortheadern nicht. Tatsächlich, wenn ich einen gut formatierten Antworttext mit Json-Format wie folgt versuche:
http --session=cookies.txt --pretty all --json --print=b --style=xcode "https://api.spotify.com/v1/tracks/0eGsygTp906u18L0Oimnem"
Es klappt.
Wenn die HTTP-Antwortheader text/plain
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 1996
Content-Type: text/plain; charset=utf-8
Die resultierende Formatierung ist schlicht.
HTTPie betrachtet den Header der Antwort Content-Type
. Wenn es text/plain
, führt es keine spezielle Formatierung durch. Die von Ihnen angegebene URL gibt Content-Type: application/json; charset=utf-8
sodass sie richtig formatiert und als JSON hervorgehoben wird.
@jkbrzt genau. Tatsächlich bestand das Problem darin, dass die Serverheader text/plain
lauteten, während der Text ein als Json-Body formatierter Text (gut formatierter Json) war. Grundsätzlich ist der Antwortheader Content-Type
nicht application/json
. Kann HTTPie
in diesen Fällen die Json-Formatierung erzwingen?
Hilfreichster Kommentar
@jkbrzt genau. Tatsächlich bestand das Problem darin, dass die Serverheader
text/plain
lauteten, während der Text ein als Json-Body formatierter Text (gut formatierter Json) war. Grundsätzlich ist der AntwortheaderContent-Type
nichtapplication/json
. KannHTTPie
in diesen Fällen die Json-Formatierung erzwingen?