Pythonの辞書をJSONに変換する方法(json.dumps() / json.loads())初心者向け完全ガイド
生徒
「Pythonで作った辞書をJSONという形式に変換する方法はありますか?」
先生
「はい、Pythonではjson.dumps()を使うと辞書をJSON形式の文字列に変換できます。また、json.loads()を使えば、逆にJSONから辞書に戻せます。」
生徒
「JSONって何ですか?どうやって使うんですか?」
先生
「では、まずJSONの基本から順番に説明していきましょう!」
1. JSONとは?初心者にもわかりやすく解説
JSON(ジェイソン)は、JavaScript Object Notationの略で、データを保存したり送受信したりするための世界標準のデータ形式です。一言でいうと、「情報を整理して、人間にもコンピューターにも分かりやすく書いたテキストデータ」のことです。
例えば、Webサービスやスマホアプリが、サーバーから最新情報を取得する際の「共通言語」として頻繁に活用されています。テキスト形式なので、WindowsやMac、PythonやJavaScriptといった環境の違いを問わずにデータをやり取りできるのが最大のメリットです。
Pythonの「辞書」と「JSON」の違い
見た目はそっくりですが、明確なルールがあります。特に初心者が間違いやすいポイントを整理しましょう。
- 引用符:JSONは必ずダブルクォート(")で囲みます。Pythonの辞書で使えるシングルクォート(')は使えません。
- データの種類:Pythonの辞書はプログラムの中で操作する「データそのもの」ですが、JSONはあくまで「文字列(テキスト)」です。
- 型:JSONでは「真偽値」は小文字(true, false)ですが、Pythonでは(True, False)と書きます。
具体的にどのような書き方をするのか、プログラミング未経験の方でもイメージしやすいように、身近な「自己紹介データ」を例に見てみましょう。
{
"user_name": "山田太郎",
"age": 20,
"is_student": true,
"skills": ["Python", "HTML", "CSS"]
}
このように、"項目名": 値 という形式でデータを並べるだけで、名前、年齢、学生かどうか、スキル一覧といった複数の情報を一つの塊としてシンプルに表現できるのがJSONの魅力です。この基本を理解しておくと、この後の「Pythonでの変換(json.dumps)」がスムーズに理解できるようになります。
2. Pythonで辞書をJSONに変換する(json.dumps)
Pythonでプログラムとして扱っている「辞書(dict)」を、外部とのやり取りに便利な「JSON形式の文字列」に変換することをシリアライズ(直列化)と呼びます。この変換を行うのが、Pythonに標準搭載されているjson.dumps()関数です。
まずは、最もシンプルな変換の例を見てみましょう。例えば、プログラミング学習サイトの会員情報をJSONに変換する場合は以下のようになります。
import json
# 1. 変換したい「辞書」を用意する
user_info = {
"name": "山田太郎",
"age": 20,
"course": "Python入門"
}
# 2. json.dumps()を使ってJSON文字列に変換
# ensure_ascii=False を指定することで日本語の文字化けを防ぎます
json_str = json.dumps(user_info, ensure_ascii=False)
print(json_str)
{"name": "山田太郎", "age": 20, "course": "Python入門"}
知っておくと役立つ「引数」のポイント
初心者が特につまずきやすいのが、日本語の扱いです。デフォルトではensure_ascii=Trueとなっているため、日本語が\u3042のような記号(Unicodeエスケープ)に変換されてしまいます。「日本語を使うときは ensure_ascii=False をセットで覚える」のが、SEOに強い綺麗なコードを書くコツです。
このように、json.dumps()を使うだけで、複雑なデータ構造も一瞬でテキスト形式に変換できます。これにより、データを他のプログラムに渡したり、Webページに表示させたりすることが可能になります。
3. JSONを辞書に変換する(json.loads)
次に、先ほどとは逆のパターンを学びましょう。Web APIからデータを受け取った時など、「JSON形式の文字列」をPythonで操作しやすい「辞書(dict)」に戻す作業が必要です。これをデシリアライズ(逆直列化)と呼び、Pythonではjson.loads()関数を使います。
「loads」の「s」は「String(文字列)」の略だと覚えると、初心者の方でも忘れにくくなります。さっそく、具体的なプログラムの書き方を見てみましょう。
import json
# 1. JSON形式の「文字列」を用意する(シングルクォートで囲まれたテキスト)
# ※中身のキーや値はダブルクォート(")で囲まれている必要があります
json_text = '{"name": "鈴木花子", "age": 25, "city": "大阪府"}'
# 2. json.loads()を使ってPythonの辞書に変換
user_dict = json.loads(json_text)
# 3. 結果を確認(辞書型なので、特定のデータだけを取り出すことも可能)
print(user_dict)
print(f"名前は{user_dict['name']}さんです。")
{'name': '鈴木花子', 'age': 25, 'city': '大阪府'}
名前は鈴木花子さんです。
初心者がハマりやすい注意点
json.loads()に渡す文字列の中で、中身をシングルクォート(')で書いてしまうと、json.decoder.JSONDecodeErrorというエラーが発生します。JSONのルールは「中身は必ずダブルクォート(")」であることを意識しましょう。ここさえ押さえれば、外部データを自由にPythonで扱えるようになります!
これで、ただのテキストだったJSONデータが「Pythonの辞書」に変換されました。辞書になれば、特定の項目(名前や年齢など)だけを抽出したり、計算に使ったりと、プログラムで自由自在に加工できるようになります。
4. Pythonの辞書データをJSONファイルとして保存する(json.dump)
これまでは「文字列」への変換を見てきましたが、実際の開発では「データをファイルとして保存し、後で再利用する」場面が非常に多くあります。設定ファイルやゲームのセーブデータ、分析結果の保存などがその代表例です。
Pythonで辞書をJSONファイルとして書き出すには、json.dump()(最後に「s」がつかないメソッド)を使用します。プログラム初心者の方でも扱いやすい、シンプルな保存方法を確認してみましょう。
import json
# 保存したい辞書データ(例:お気に入りリスト)
favorite_data = {
"category": "フルーツ",
"items": ["りんご", "バナナ", "メロン"],
"updated": "2026-02-08"
}
# 1. open()を使って書き込み用のファイル(data.json)を開く
# 2. json.dump()でファイルに辞書の内容を書き込む
with open("data.json", "w", encoding="utf-8") as f:
json.dump(favorite_data, f, ensure_ascii=False, indent=4)
print("ファイルの保存が完了しました!")
ここで使った「便利で見やすい」テクニック
- indent=4: これを指定するだけで、JSONファイルの中身が自動で改行・インデント(字下げ)され、人間がパッと見て理解しやすい形式になります。
- with構文:
with open(...)という書き方を使うと、ファイルの保存が終わった後に自動でファイルを閉じてくれるため、初心者でもミスなく安全にファイルを扱えます。 - encoding="utf-8": 日本語を含むデータを保存する際は、この指定を忘れないようにしましょう。
この方法で作成された「data.json」は、メモ帳などのテキストエディタで開いて内容を確認することができます。プログラムの実行結果を形として残せるようになると、Pythonでできることの幅が一気に広がりますよ。
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を見ても怖がらずに、まず辞書に変換して中身を確認してみます。」