我有以下代碼使用 Mojo::UserAgent 來獲取 json 回應:
$tx = $ua->get($host.'/api/endpoint/streams' => {Token => $token , accept => 'application/json' ,'Content-Type' => 'application/json' });
print $tx->res->body;
它將結果回傳為 JSON 并將其列印為原始 JSON ,我的問題是如何將結果列印為漂亮的 json
uj5u.com熱心網友回復:
您正在以從 API 回傳的格式列印回應正文。這只是一個恰好沒有縮進的 JSON 字串。為了讓它看起來漂亮,您必須將其解碼為 Perl 資料結構(如果足夠的話,您可以在此時列印它以讀取它),然后將其轉換回啟用漂亮列印的 JSON。
Mojo::Message 具有內置決議功能,因此您可以這樣做:
my $streams = $tx->res->json;
如果您只想讀取結果,此時,您可以使用Data::Dumper或其他更好讀的東西,例如Data::Printer。
use Data::Dumper;
print Dumper $streams;
您已經擁有Mojo::UserAgent 所使用的 Mojo::JSON,但它似乎不能進行漂亮的列印。JSON::PP自 5.14 版本以來一直在 Perl 代碼中,因此您可能可以安全地使用它。
use JSON::PP;
print JSON::PP->new->utf8->pretty(1)->encode($streams);
uj5u.com熱心網友回復:
我通常不在乎是否有漂亮的東西列印 JSON,因為我將使用 jq 來完成該任務。一旦我開始作業,我很少會親自查看 JSON,而當我確實想要這樣做時,這很容易:
perl script.pl | jq -r .
這樣,我的程式就不必做任何額外的作業,我不需要額外的依賴項,而且我不會將漂亮的 JSON 版本強加在不關心它的東西上。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/506242.html
上一篇:如何垂直而不是水平顯示資料值
