Y's note

Web技術・プロダクトマネジメント・そして経営について

本ブログの更新を停止しており、今後は下記Noteに記載していきます。
https://note.com/yutakikuchi/

JSONを見やすく表示するにはPythonの-mjson.toolを使うと良いよ

Python クックブック 第2版

Python クックブック 第2版

JSONを見やすく表示する

WebツールやExtension
{"Compile":["C","C++","Objective-C"],"Script":["JavaScript","PHP","Perl","Python"]}

JSONJavaScriptのObjectを文字列化したもので、1行にまとまってしまうため非常に見づらいです。「JSON 整形」というキーワードでぐぐると上のようにWebサービスからChrome/FirefoxのExtensionなどが出てきます。今回はサーバサイドでJSONをechoする処理を書いていて、ツールを用いる事無く簡単に見やすくする方法を調べていたのですが、Pythonの-mjson.toolを使うとコマンドライン上で整形できることがわかりました。

Python pretty-print-json

Stack Overflowに How to pretty-print JSON script?というコラムがあり、そこでPythonの-mjson.toolを指定する方法を知りました。例えば以下のようなPerlコードがあって、実行処理に対してパイプ(|)でpython -mjson.toolを指定するだけで整形してくれます。下では生のJSON文字列と整形した内容を比較していますが、見やすさは歴然だと思います。特にHashを表す{}と配列を表す[]がそれぞれ分かりやすいかと。

#!/usr/bin/perl

use strict;
use warnings;
use JSON;

my %array = ();
push( @{$array{Script}}, ( 'JavaScript', 'PHP', 'Perl', 'Python' ) );
push( @{$array{Compile}}, ( 'C', 'C++', 'Objective-C' ) );

print encode_json( \%array );
$ perl echo_json.pl
{"Compile":["C","C++","Objective-C"],"Script":["JavaScript","PHP","Perl","Python"]}
$ perl echo_json.pl |  python -mjson.tool
{
    "Compile": [
        "C", 
        "C++", 
        "Objective-C"
    ], 
    "Script": [
        "JavaScript", 
        "PHP", 
        "Perl", 
        "Python"
    ]
}