JSON-python

【jsonモジュール】PythonでJSONを整形する方法

はじめに

Python組み込みの「json」モジュールを使って、JSONを整形する方法を解説します。

環境

この記事は以下の環境で作成しています。

環境 バージョンなど
Python 3.9.6
OS Wiindows10

プログラム概要

プログラムの概要は以下の通りです。

  • JSONファイル読み込んで、辞書に出力する
  • 辞書から「JSON文字列」を出力する(整形なし)
  • 辞書から「JSON文字列」を出力する(整形あり)
  • 辞書から「JSONファイル」を出力する(整形あり

実行結果

後述する「JSONを整形するコード」の実行結果は以下の通りです。

#
# 整形 "なし" の出力
#
{"Email": "james@example.com", "Active": true, "CreatedDate": "2013-01-20T00:00:00Z", "Roles": ["User", "Admin"]}

#
# 整形 "あり" の出力
#
{
  "Email": "james@example.com",
  "Active": true,
  "CreatedDate": "2013-01-20T00:00:00Z",
  "Roles": [
    "User",
    "Admin"
  ]
}

全体コード

全体コードは以下の通りです。詳細な内容は後述する「コードのポイント」で解説します。

import json

# ファイルのある場所でPythonを実行するコードです
import os
os.chdir(os.path.dirname(os.path.abspath(__file__)))

# JSONファイルを辞書に読み込みます
with open("test.json", "r") as file:
    dict = json.load(file)

# 辞書から「JSON文字列」を出力します(整形なし)
jsonStr = json.dumps(dict)

# 辞書から「JSON文字列」を出力します(整形あり インデント スペース2つ)
jsonStrIndent = json.dumps(dict,indent=2)

# 出力したJSON文字列を表示します。
print(jsonStr)
print(jsonStrIndent)

# json "ファイル" に出力します
with open("output.json", "w") as outputFile:
    json.dump(dict, outputFile, indent=2 )

コードのポイント

Pythonの実行場所を設定する

Pythonの実行場所を設定するコードです。

VisualStudioCodeなどで実行する場合、実行場所が「C:\Python」など、Pythonファイルのあるフォルダとは、別の場所を差すことがあります。

その場合「JSONファイルが見つからない」とエラーが出てしまうので、以下のコードで実行場所を「Pythonファイルと同じ場所」に設定しています。

# ファイルのある場所でPythonを実行するコードです
import os
os.chdir(os.path.dirname(os.path.abspath(__file__)))

ファイルの読み込み

jsonモジュールのload関数を使って、JSONファイルを辞書に読みます。JSONファイルの読み込みについては「こちらの記事」をご覧ください。

# JSONファイルを読み込みます
with open("test.json", "r") as file:
    dict = json.load(file)

JSON文字列の出力

jsonモジュールのdumps関数を使って、辞書から「JSON文字列」を出力します。

dumps関数ではindentを指定しない場合、改行やインデントのない、一行のJSON文字列が出力されます。人間にやさしい形のJSON文字列を出力する場合は、「indent」にプラスの整数を指定してください。

※ 「0」を設定すると、改行だけされたJSON文字列が出力されます。

# json "文字列" を出力します(整形なし)
jsonStr = json.dumps(dict)

# json "文字列" を出力します(整形あり インデント スペース2つ)
jsonStrIndent = json.dumps(dict,indent=2)

dump関数には「ensure_ascii」を設定することで、日本語の文字列をエスケープシーケンスなしで出力する設定もあります。詳しくは「こちら」の記事をご覧ください。

JSON文字列のコンソール出力

上のコードのコンソール出力結果です(コメントは説明用に追加しています)。

#
# 整形 "なし" の出力
#
{"Email": "james@example.com", "Active": true, "CreatedDate": "2013-01-20T00:00:00Z", "Roles": ["User", "Admin"]}

#
# 整形 "あり" の出力
#
{
  "Email": "james@example.com",
  "Active": true,
  "CreatedDate": "2013-01-20T00:00:00Z",
  "Roles": [
    "User",
    "Admin"
  ]
}

ファイル出力時の整形

JSON文字列と同様に、「JSONファイル」へ出力する際もindentの設定が使えます。

ファイル出力用のload関数indentに整数を設定します。

# json "ファイル" に出力します
with open("output.json", "w") as outputFile:
    json.dump(dict, outputFile, indent=2 )

上記のコードにより、Pythonファイルと同じフォルダに整形された「output.json」が出力されます。

まとめ

Python組み込みの「json」モジュールを使って、JSONを整形する方法を解説しました。参考になればうれしいです。

UdemyでPythonのスキルに差をつける(無料あり)

Pythonのスキルを上げるには、Udemyの動画講座がおすすめです。

1講座 2440円程度で返金保証あり、無料講座も130本近く公開されています。アプリならオフラインで視聴できて、時間や場所にも縛られません。みんながやっていない今始めることで、スキルや評価に差をつけることができます。以下はPythonの無料講座の一覧です。

⇒ Pythonの講座一覧を見る

講座選びに迷ったらコレ

講座選びに迷ったら、以下がおすすめします。落ち着いた話し方とBGMで聴きやすく「ベストセラー」になっている講座です。

⇒ 現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル を見る

シリコンバレーの現役エンジニア酒井潤さんの講座です。基礎~応用まで盛りだくさんの講座です。シリコンバレー流の「動くだけでなく、他人も読めるコード」も一緒に学べます。

⇒ 独学で身につけるPython〜基礎編〜 を見る

京都大学・トヨタ自動車の経歴を持つ安井亮平さんの講座です。Pythonでの業務効率化方法がメインですが、Pythonの基礎から学べます。

応援・要望お待ちしてます

ブログを見ていて「この辺を詳しく知りたい」「このライブラリの使い方を知りたい」「こんなことで困ってる」...etc があれば、コメント・問い合わせ・Twitterで教えてください。質問・ご要望に合わせて解説記事を作ります。

ブログを気に入っていただけたり、「応援してもいいよ」という方がいたら、ブログやSNSでの紹介をお願いします。 あたたかい応援は、中の人の更新の大きな励みになります。

ABOUT ME
えす
現役のソフトウェアエンジニアです。 C++ C# Python を使ってます。10年ちょい設計/開発部門にいましたが、今はQAエンジニアっぽいことをしています。

COMMENT

メールアドレスが公開されることはありません。