Pythonの辞書をJSONに変換する方法!json.dumps()・json.loads()をやさしく解説
生徒
「Pythonの辞書をそのままファイルに保存したいんですが、そのままだと難しいって聞きました。どうすればいいんですか?」
先生
「Pythonの辞書は便利ですが、そのまま保存するとパソコンや他のアプリで読めないことが多いんです。そこで使うのがJSON(ジェイソン)という形式です。」
生徒
「JSONって何ですか?」
先生
「JSONはデータをテキストとして保存するための形式で、ほとんどのプログラミング言語で扱えます。Pythonの辞書をJSONに変換したり、JSONから辞書に戻したりするのにjsonモジュールを使いますよ。」
生徒
「どうやって変換するんですか?」
先生
「それでは、json.dumps()とjson.loads()の使い方を順番に説明しましょう!」
1. JSON(ジェイソン)とは?
JSONは「JavaScript Object Notation」の略で、データを文字列で表現する決まりごとです。見た目は辞書に似ていて、{"キー": "値"}のように書きます。
JSONはテキストなので、ファイルに書き込んだり、ネットで送ったりするのに便利です。Pythonの辞書はこのJSON形式に変換できるため、他のアプリや言語とやり取りしやすくなります。
2. json.dumps()で辞書をJSON文字列に変換する
json.dumps()は、Pythonの辞書をJSON形式の文字列に変換する関数です。dumpsは「dump string」の略で、「文字列にする」という意味です。
import json
data = {"名前": "太郎", "年齢": 25, "趣味": ["読書", "映画"]}
json_str = json.dumps(data, ensure_ascii=False) # 日本語を正しく表示するためにensure_ascii=Falseを使う
print(json_str)
{"名前": "太郎", "年齢": 25, "趣味": ["読書", "映画"]}
このように辞書が文字列として扱えるようになります。これをファイルに書き込んだり、ネットに送ったりできます。
ポイント: ensure_ascii=Falseを使うと日本語がそのまま見える形で出力されます。これを入れないと日本語がUnicode(例:「\u8aad\u66f8」)のように表示されます。
3. json.loads()でJSON文字列を辞書に変換する
json.loads()は、JSON形式の文字列をPythonの辞書に変換する関数です。loadsは「load string」の意味で、「文字列を読み込んで変換する」ことを指します。
json_str = '{"名前": "太郎", "年齢": 25, "趣味": ["読書", "映画"]}'
data = json.loads(json_str)
print(data)
print(type(data))
{'名前': '太郎', '年齢': 25, '趣味': ['読書', '映画']}
<class 'dict'>
このようにJSON文字列から元の辞書に戻せます。戻した辞書は普通の辞書と同じように使えます。
4. JSON変換でよくある疑問と注意点
Q1. なぜJSONに変換する必要があるの?
Pythonの辞書はPythonだけの形式なので、そのまま他のプログラムやファイルで使えません。JSONは多くの環境で読み書きできるので、データのやり取りが簡単になります。
Q2. どんなデータがJSONにできるの?
文字列、数値、リスト、辞書(ネストもOK)など基本的なデータは変換できます。ただし、Python独自の型(例:setや関数など)は直接変換できません。
Q3. ファイルに保存するときはどうするの?
JSON文字列をファイルに書き込めばOKです。逆にファイルから読み込んで辞書に戻すこともできます。ファイル操作は別途json.dump()やjson.load()を使います。
5. JSON変換の使い方
json.dumps()で辞書をJSON文字列に変換するjson.loads()でJSON文字列を辞書に戻す- 日本語を扱うときは
ensure_ascii=Falseを使うと見やすい - JSONはデータ交換や保存に便利なテキスト形式
これらの方法を使いこなすことで、Pythonの辞書データを安全に保存・共有できるようになります。
まとめ
Pythonの辞書とJSON変換を振り返って理解を深めよう
今回の記事では、Pythonの辞書(dictionary)をJSON形式に変換する方法について、基礎から丁寧に学びました。 Pythonの辞書は、キーと値を使ってデータを管理できる非常に便利なデータ構造ですが、そのままでは ファイルに保存したり、他のプログラミング言語やアプリケーションとデータをやり取りしたりすることが難しい場合があります。 そこで登場するのがJSONというデータ形式です。
JSONはテキスト形式でデータを表現できるため、環境や言語を問わず扱いやすく、 Pythonの辞書構造とも非常に相性が良いのが特徴です。 辞書をJSONに変換することで、設定ファイルの保存、Web APIでのデータ送受信、 ログデータの記録、外部システムとの連携など、実務でも幅広く活用できるようになります。
json.dumps()とjson.loads()の役割を整理
辞書をJSONに変換する際に使うのが json.dumps() です。
この関数は、Pythonの辞書やリストなどのデータを、JSON形式の文字列へと変換します。
文字列になることで、ファイルに保存したり、通信で送ったりできるようになります。
一方で、JSON形式の文字列をPythonの辞書に戻すときに使うのが json.loads() です。
JSON文字列を読み込んで辞書に変換することで、再びPythonのプログラム内で
普通の辞書としてデータを操作できるようになります。
この「変換して戻す」という流れを理解することが、JSON活用の第一歩です。
日本語データとensure_asciiの重要性
記事の中でも触れたように、日本語を含む辞書をJSONに変換する場合は
ensure_ascii=False を指定することがとても重要です。
これを指定しない場合、日本語がUnicodeのエスケープ文字として表示され、
人が読みにくいJSONになってしまいます。
可読性の高いJSONを作ることは、デバッグやメンテナンスのしやすさにも直結します。 チーム開発や将来的な修正を考えると、見やすいJSONを出力する意識はとても大切です。
辞書とJSON変換の基本サンプルプログラム
ここで、記事内容を振り返る意味も込めて、辞書とJSON変換の基本的な流れを あらためて確認しておきましょう。
import json
# Pythonの辞書
user_data = {
"名前": "花子",
"年齢": 30,
"スキル": ["Python", "SQL", "HTML"]
}
# 辞書をJSON文字列に変換
json_text = json.dumps(user_data, ensure_ascii=False)
print(json_text)
# JSON文字列を辞書に戻す
restored_data = json.loads(json_text)
print(restored_data)
このように、辞書 → JSON → 辞書という流れを理解しておくことで、 データの保存や通信処理が一気に身近なものになります。
JSON変換を理解することで広がる活用シーン
Pythonの辞書とJSON変換を理解すると、できることが一気に広がります。 例えば、Webアプリケーションでは、サーバーとブラウザ間でJSON形式のデータをやり取りするのが一般的です。 また、設定ファイルをJSONで管理することで、プログラムの挙動を柔軟に変更できるようになります。
初心者のうちは「辞書をJSONにする理由」が少し分かりにくいかもしれませんが、 実際にアプリ開発やデータ処理を進めていくと、 JSON変換は避けて通れない重要な知識であることに気づくはずです。
生徒:
「最初は、辞書をそのまま使えばいいのに、どうしてJSONに変換するんだろうと思っていました。
でも、ファイル保存や他のシステムとのやり取りを考えると、JSONにする意味がよく分かりました。」
先生:
「その気づきはとても大切ですね。Pythonの中だけで完結する処理なら辞書のままで十分ですが、
外にデータを出すときは共通形式が必要になります。その代表例がJSONです。」
生徒:
「json.dumps()とjson.loads()の役割も整理できました。
変換して終わりではなく、ちゃんと元に戻せるのが安心ですね。」
先生:
「その通りです。『変換できる』だけでなく、『安全に戻せる』ことが重要です。
これを理解しておけば、Web開発やAPI連携でも困らなくなりますよ。」
生徒:
「これからは、辞書とJSONをセットで考えながらコードを書いてみます!」
先生:
「ぜひ実際に手を動かしながら練習してください。
辞書とJSONの理解は、Python学習の大きな土台になります。」