Python 2.6 以降には json モジュールが標準搭載されていて、これはコマンドラインからも便利に利用することができます。 下記は、json.tool モジュール を使って JSON 形式のテキスト出力を、きれいに整形しなおして出力する例です。
$ python -mjson.tool input.json
# あるいは
$ cat input.json | python -mjson.tool
ここでは、次のような入力ファイル (input.json
) を使って試してみます。
スペースはわざとぐちゃぐちゃに入れています。
{"ccc" : 300, "aaa":100, "bbb":200, "data": [1,2,3]}
$ python -mjson.tool input.json
{
"ccc": 300,
"aaa": 100,
"bbb": 200,
"data": [
1,
2,
3
]
}
Python 3.7 以降で、キーの順序は入力ファイルのものが保持されるようになりました(内部的に辞書オブジェクト (dict
) のキー挿入順序が保持されるようになりました)。
キー順序をアルファベット順にソートして出力したいときは、--sort-keys
オプションを指定します。
$ python -mjson.tool --sort-keys input.json
{
"aaa": 100,
"bbb": 200,
"ccc": 300,
"data": [
1,
2,
3
]
}
バージョン 3.9 以降では、インデントサイズの調整などもできるようになっています (--indent
)。