Pythonの辞書をJSONに変換する方法(json.dumps() / json.loads())初心者向け完全ガイド
生徒
「Pythonで作った辞書をJSONという形式に変換する方法はありますか?」
先生
「はい、Pythonではjson.dumps()を使うと辞書をJSON形式の文字列に変換できます。また、json.loads()を使えば、逆にJSONから辞書に戻せます。」
生徒
「JSONって何ですか?どうやって使うんですか?」
先生
「では、まずJSONの基本から順番に説明していきましょう!」
1. JSONとは?
JSON(ジェイソン)は、JavaScript Object Notationの略で、データを保存したり送受信したりするための形式です。人間が読めて、パソコン同士でもやりとりしやすいという特徴があります。例えば、WebサービスやAPI(エーピーアイ)でデータをやり取りするときに使われます。
Pythonの辞書(dictionary)ととても似ていますが、書き方が少し違います。Pythonの辞書はシングルクォート(')を使うことが多いですが、JSONはダブルクォート(")を使うのがルールです。
2. Pythonで辞書をJSONに変換する(json.dumps)
Pythonでは標準ライブラリのjsonモジュールを使って、辞書をJSON形式の文字列に変換できます。そのとき使うのがjson.dumps()です。
import json
data = {"名前": "山田太郎", "年齢": 30, "住所": "東京都"}
json_str = json.dumps(data, ensure_ascii=False)
print(json_str)
{"名前": "山田太郎", "年齢": 30, "住所": "東京都"}
ensure_ascii=Falseを付けると、日本語も文字化けせずに表示されます。
3. JSONを辞書に変換する(json.loads)
逆に、JSON形式の文字列をPythonの辞書に戻すにはjson.loads()を使います。
json_text = '{"名前": "鈴木花子", "年齢": 25, "住所": "大阪府"}'
dict_data = json.loads(json_text)
print(dict_data)
{'名前': '鈴木花子', '年齢': 25, '住所': '大阪府'}
これで文字列として扱っていたJSONを辞書に変換でき、通常のPythonの辞書として利用できます。
4. 辞書をファイルとして保存する(JSON形式)
JSONは文字列として扱うだけでなく、ファイルに保存して再利用することもできます。
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4)
indent=4を指定すると、見やすく整形されたJSONになります。
5. JSONファイルを読み込む
保存したJSONファイルは、json.load()で読み込むことができます。
with open("data.json", "r", encoding="utf-8") as f:
loaded_data = json.load(f)
print(loaded_data)
この方法を使えば、外部のデータをPythonで処理できるようになります。
6. JSONと辞書の違いに注意
- JSONはあくまで「文字列形式のデータ」
- 辞書はPythonの「データ型」
- JSONはダブルクォートを使うのがルール
この違いを理解しておくと、エラーの原因を避けやすくなります。
7. 実用例:APIのデータを扱う
例えば、Webサービスから取得したデータがJSON形式の場合、json.loads()を使って辞書に変換すれば、Pythonで自由に処理できます。
import requests
response = requests.get("https://api.example.com/data")
data = json.loads(response.text)
print(data["title"])
このように、Pythonのjson.dumps()とjson.loads()は、ファイル保存やAPIとのデータ交換に欠かせない機能です。
まとめ
Pythonの辞書とJSON変換の全体像を振り返ろう
この記事では、Pythonの辞書をJSON形式に変換する方法と、JSONから辞書に戻す方法について、初心者向けに段階的に解説してきました。Pythonの辞書は、プログラムの中でデータを管理するための基本的なデータ構造ですが、そのままではファイル保存やネットワーク通信には向いていません。そこで重要になるのが、JSONというデータ形式です。
JSONは、人間にも読みやすく、プログラム同士でも扱いやすい形式として広く使われています。Pythonでは標準ライブラリとしてjsonモジュールが用意されており、json.dumps()を使えば辞書をJSON文字列に変換でき、json.loads()を使えばJSON文字列を辞書に戻すことができます。この変換の流れを理解することで、Pythonのプログラムは一気に実用的になります。
json.dumps()とjson.loads()の役割を整理
json.dumps()は、Pythonの辞書やリストなどのデータを、JSON形式の文字列に変換するための関数です。ファイルに保存したり、APIに送信したりする前の「変換処理」として使われます。一方、json.loads()は、その逆で、JSON形式の文字列をPythonの辞書として扱えるように戻すための関数です。
特に日本語を含むデータを扱う場合には、ensure_ascii=Falseを指定することで、文字化けを防ぎ、読みやすいJSONを作成できます。以下は、記事内と同じ書き方・構造を使ったサンプルです。
import json
user = {"名前": "佐藤次郎", "年齢": 28, "職業": "エンジニア"}
json_data = json.dumps(user, ensure_ascii=False)
print(json_data)
dict_data = json.loads(json_data)
print(dict_data)
このように、JSONと辞書を相互に変換できるようになると、データの保存・読み込み・受け渡しが非常にスムーズになります。Python初心者にとって、この一連の流れを理解することは大きなステップアップです。
ファイル保存とAPI連携で広がる活用範囲
JSON形式は、ファイルとして保存できる点も大きなメリットです。json.dump()やjson.load()を使えば、Pythonの辞書をJSONファイルとして保存し、後から再利用できます。これにより、設定情報の管理や、データの一時保存、ログの記録など、さまざまな場面で活用できます。
また、Web APIから取得するデータの多くはJSON形式です。APIレスポンスをjson.loads()で辞書に変換すれば、キーを指定して必要な情報を簡単に取り出せます。PythonでのWeb開発やデータ取得を学んでいくうえで、JSONと辞書の関係を理解しておくことは欠かせません。
生徒
「Pythonの辞書をそのまま使うだけじゃなくて、JSONに変換する意味がよく分かりました。ファイル保存やAPIで使えるんですね。」
先生
「そうです。JSONはプログラム同士をつなぐ共通言語のような存在です。Pythonの辞書とJSONを変換できるようになると、できることが一気に増えます。」
生徒
「json.dumps()とjson.loads()の役割がはっきり分かれいて、混乱しなくなりました。」
先生
「その理解はとても大切ですね。変換の向きを意識できれば、エラーも減ります。これからAPIやファイル操作を学ぶときにも、今日の内容が必ず役立ちますよ。」
生徒
「これからは、JSONを見ても怖がらずに、まず辞書に変換して中身を確認してみます。」