PythonでJSONファイルを見やすく整形表示(プリティプリント)する方法
Pythonは、他の多くのプログラミング言語と同様に、JavaScript Object Notation(JSON)データをスムーズに扱うことができます。さまざまなソースからJSONデータを取り込み、他のファイルと同じように操作できるため、JSONファイルを読みやすい形で整形表示(プリティプリント)したい場合に非常に便利です。
この記事では、PythonでJSONファイルをプリティプリントする2つの方法をご紹介します。どちらの方法もターミナルとコマンドラインを使用しますが、そのうち1つはPythonの知識がまったく不要です。
プリティプリントとは?(JSONファイルで使う理由)
簡単に言えば、プリティプリントとは、生の形式で格納されたデータを人間が読める形に変換する処理のことです。つまり、データを「見栄えよく」整える作業といえます。
通常、この処理は、プログラムに取り込んだファイルの中でも、人が目視して解析・確認する必要があるデータに対して行われます。多くの場合、JSONなどの外部ファイル形式のデータは「ミニファイ(圧縮)」されています。これはコンピュータが解析しやすくするために、コードから余白(空白文字)をすべて取り除く処理です。
たとえば、ミニファイされたデータベースの生データをスクリプトに通して、適切なインデントや書式を追加し、その結果を他者にエクスポートしたり、自由に加工したりすることができます。
PythonでJSONファイルをプリティプリントする手順
ここからは、Pythonを使ってJSONファイルをプリティプリントする具体的な手順を解説します。例ではNeoVimと内蔵の:termコマンドを使用していますが、ターミナルから直接Pythonインタープリタを起動して実行しても問題ありません。
1. JSONファイルを用意する
まず、操作対象となるJSONデータが必要です。アプローチは2つあります。Pythonスクリプト内でデータを定義する方法と、JSONファイルから読み込む方法です。実際の開発では、ほとんどのデータがファイルとして提供されるため、ここではファイルを読み込む方法に焦点を当てます。
今回の例では、一切フォーマットが施されていないJSONデータのダンプを扱います。
この「addresses.json」というファイルをPythonに読み込み、整形していきます。PythonでJSONファイルを扱うには、まずjsonモジュールをインポートします。次に、対象のファイルを変数として定義しましょう。
ここまで準備できれば、「addresses.json」の操作を始められます。
2. PythonでJSONファイルを開く
続いて、「addresses.json」を開きます。これには通常のwith open…as構文を使用します。
with open(json_file, 'r') as file:
…
このコードブロック内で、json.load()を使って「addresses.json」を読み込み、変数に代入します。
parsed = json.load(file)
この状態でファイルを実行すると、処理自体は完了しますが、ターミナルには何も表示されません。結果を確認するには、次のステップ3に進む必要があります。
3. JSONファイルを出力する(設定の調整も可能)
最後に、実際にプリティプリントを実行します。with open…asコードブロック内のインデントされた行として、以下のコードを追加してください。
print(json.dumps(parsed, indent=4, sort_keys=True))
このコードの仕組みを分解してみましょう。print関数がjson.dumps()を呼び出しており、ここには3つの引数が渡されています。
- プリティプリントしたいファイル(データ)の名前
- インデントのサイズ
- キーによってソートするかどうか
準備ができたら変更を保存し、新しいターミナルウィンドウを開きます。プロジェクトフォルダへ移動して、プログラムを実行しましょう。
すると、ターミナルの出力に設定が反映され、JSONファイルが見やすく整形されて表示されます。
もちろん、実務では通常、整形したJSONをターミナルに出力するのではなく、別の場所に保存して活用することになります。それでも、コマンドラインからワンライナーでJSONファイルをプリティプリントできる便利な方法があるのは覚えておいて損ありません。
コマンドラインからPythonでJSONファイルをプリティプリントする方法
実は、コマンドラインから直接、PythonでJSONファイルをプリティプリントする超高速な方法があります。新しいターミナルウィンドウを開き、プロジェクトフォルダに移動して、以下のコマンドを実行するだけです。
cat addresses.json | python3 -m json.tool
この例では、「addresses.json」の部分を実際のファイル名に置き換えてください。コマンドを実行すると、整形された出力がターミナル上に表示されます。
この方法なら、コードを一切書かずに、その場で数秒でJSONファイルを整形表示できます。手軽さという点では最強のソリューションです。
まとめ
PythonでJSONファイルをプリティプリントする用途は多岐にわたります。多くの場合、ミニファイされたデータを読みやすい形に戻し、他のユーザーにエクスポートするために使われます。目的が何であれ、Pythonならjsonモジュールと「with open…as」コードブロックだけで、この処理を簡単に実現できます。
Pythonにできることをさらに知りたい方は、Pythonのループ処理やrange()関数に関する他の記事もぜひチェックしてみてください。この方法が日々の業務に役立ちそうでしょうか?ぜひコメント欄でお聞かせください。
-
Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例
Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実
-
PythonでJSONを解析する方法!json.load()による読み込みとデータ抽出の基本
PythonでJSONを解析(パース)するにはどうすればよいのでしょうか。基本的な流れはシンプルです。まず json.load() メソッドを使ってJSONファイルを読み込みます。すると、結果はPythonの辞書型として返されるため、あとは通常の辞書操作で各フィールドにアクセスできるようになります。 JSONは軽量なデータ交換フォーマットで、APIレスポンスや設定ファイルなど、さまざまな場面で利用されています。 JSONファイルやJSONレスポンスから情報を取り出すには、まずデータをパースしてPythonで扱える形に変換する必要があります。 PythonでJSONファイルを読み込む この記事で