JSON をフォーマットする手軽な方法として Python に標準装備されている json.tool が知られていますが、この機能に更新が入るようなので記事も更新しました。
何が変わる?
-m json.tool
ではなく -m json
からも起動するようになるようです。
また、-m json.tool
からもこれまで同様に起動できるようです。
この変更の提案者の方が json.tool
の歴史的経緯を調査したブログです。
この記事はこちらを紹介するために更新したようなものです。興味深いので読んでみてください。
Reddit における議論:
基本的な使い方
-m
は sys.path
が指定するディレクトリに置かれたモジュールを呼び出すためのオプションです。
$ echo '{"name":"Alice","job":"Engineer","id":"101"}' | python3 -m json.tool
# {
# "name": "Alice",
# "job": "Engineer",
# "id": "101"
# }
日本語を使うと文字がエスケープされることに注意
$ echo '{"name":"花子","job":"営業","id":"201"}' | python3 -m json.tool
# {
# "name": "\u82b1\u5b50",
# "job": "\u55b6\u696d",
# "id": "201"
# }
オプション
- 日本語がエスケープされないようにする
--no-ensure-ascii
$ echo '{"name":"花子","job":"営業","id":"201"}' | python3 -m json.tool --no-ensure-ascii
# {
# "name": "花子",
# "job": "営業",
# "id": "201"
# }
- キーをソートする
--sort-keys
$ echo '{"name":"Alice","job":"Engineer","id":"101"}' | python3 -m json.tool --sort-keys
# {
# "id": "101",
# "job": "Engineer",
# "name": "Alice"
# }
- インデントの数を変更する
--indent N
$ echo '{"name":"Alice","job":"Engineer","id":"101"}' | python3 -m json.tool --indent 12
# {
# "name": "Alice",
# "job": "Engineer",
# "id": "101"
# }
- ミニファイする
--compact
$ echo '{"name":"Alice","job":"Engineer","id":"101"}' | python3 -m json.tool --compact
# {"name":"Alice","job":"Engineer","id":"101"}
Link
-
json — JSON encoder and decoder — Python 3.13.0b4 documentation
- 作成時点で最新の公式ドキュメント