PythonでJSONファイルを読み書きする方法(jsonモジュールの使い方)
生徒
「先生、Pythonでデータをファイルに保存したいんですが、どんな形式で保存すればいいですか?」
先生
「よく使われるのがJSON(ジェイソン)という形式ですね。Pythonではjsonというモジュールを使って簡単に読み書きできますよ。」
生徒
「JSONってよく聞きますけど、どんなものなんですか?Pythonでどうやって扱うのか知りたいです!」
先生
「それでは、PythonでJSONファイルを読み書きする方法を、やさしく丁寧に説明していきましょう!」
1. JSON(ジェイソン)ファイルってなに?
JSONとは、JavaScript Object Notationの略で、データを「鍵(キー)」と「値(バリュー)」のペアで管理する、世界中で最も普及しているデータ形式の一つです。もともとはJavaScriptというプログラミング言語のために作られましたが、現在はPythonやPHP、Javaなど、ほぼすべての言語で標準的に使われています。
プログラミング未経験の方でも、次のシンプルな例を見ればイメージが湧きやすいはずです。例えば、ユーザー情報を保存する場合、JSONではこのように記述します。
{
"name": "Taro",
"age": 25,
"is_student": false
}
JSONの特徴とメリット:
- 人間が見ても分かりやすい: テキスト形式(文字)なので、メモ帳などで開いて内容を簡単に確認できます。
- 構造化が得意: 「名前の中に苗字と名前がある」といった、階層(親子関係)を持たせた複雑なデータも表現できます。
- 軽量で高速: 無駄な情報が少なくファイルサイズが小さいため、インターネット上でのデータのやり取りに最適です。
一見すると「ただの英語のリスト」のようですが、このシンプルなルールのおかげで、システム同士がスムーズに会話できるようになっています。Pythonでも、標準装備されているjsonモジュールを使えば、難しい設定なしですぐに読み書きを始めることが可能です。
2. jsonモジュールを使ってPythonでJSONを書き込む方法
Pythonで作成したデータを「.json」という形式のファイルとして保存する方法を解説します。これをプログラミング用語で「書き込み」や「シリアライズ」と呼びます。
プログラミング未経験の方でも、以下のコードをコピーして実行するだけで、簡単にJSONファイルを作成できます。まずは全体の流れを見てみましょう。
import json
# 保存したいデータ(辞書形式)
user_data = {
"name": "田中花子",
"age": 30,
"hobbies": ["読書", "旅行", "プログラミング"],
"is_active": True
}
# ファイルへの書き込み実行
with open("data.json", "w", encoding="utf-8") as f:
json.dump(user_data, f, ensure_ascii=False, indent=4)
print("JSONファイルへの保存が完了しました!")
知っておきたい5つのポイント解説:
import json:JSONを扱うための便利な機能を読み込みます(おまじないのようなものです)。with open("...", "w", ...):「w」はWrite(書き込み)の略です。指定したファイル名で中身を書き換える準備をします。json.dump():この1行で、PythonのデータをJSON形式に変換してファイルへ流し込みます。ensure_ascii=False:ここが重要です! これを入れないと、日本語が「\u3042」のような記号に化けてしまいます。indent=4:データに改行と段落(インデント)を加え、人間がメモ帳などで開いたときに見やすく整形します。
このコードを実行すると、同じフォルダ内に「data.json」が作成されます。Pythonのリストや辞書といったデータ構造をそのまま保存できるため、設定ファイルやログの保存に非常に便利です。
3. PythonでJSONファイルを読み込む方法:初心者向けに分かりやすく解説
JSONファイルを保存できたら、次は「読み込み(インポート)」に挑戦しましょう。読み込みとは、パソコン内に保存されたテキストデータを、Pythonが計算や加工を行える状態に戻す作業のことです。
プログラミング未経験の方でも、以下の短いコードだけで簡単にデータを呼び出すことができます。ファイルを開く際は、文字化けを防ぐために encoding="utf-8" を指定するのが現場の鉄則です。
import json
# 「data.json」というファイルを、読み込みモード(r)で開く
with open("data.json", "r", encoding="utf-8") as f:
# ファイルの中身をPythonで扱えるデータ形式に変換
loaded_data = json.load(f)
# 読み込んだ内容を画面に表示して確認
print(loaded_data)
知っておきたい!3つの重要ポイント:
- "r" モード: Read(読み取る)の頭文字です。中身を書き換えない「安全な読み取り専用」として開きます。
- json.load() 関数: 魔法のコマンドです。JSON形式の文字列を、Pythonの「辞書型(dict)」という便利な形式に自動で変換してくれます。
- with構文:
withを使うと、処理が終わった後に自動でファイルを閉じてくれるため、メモリの無駄遣いやエラーを防げます。
プログラムを実行すると、先ほど保存した「Hanako」さんの情報が、Pythonで操作可能なデータとして次のように表示されます。
{'name': 'Hanako', 'age': 30, 'hobbies': ['reading', 'travel']}
これで、一度保存したデータをいつでも再利用できるようになりました。例えば、この中から loaded_data["name"] と指定するだけで、名前だけを取り出して挨拶を表示させるといった応用も簡単です。
4. 読み込んだJSONのデータを扱うには?
読み込んだJSONデータは、Pythonの「辞書(dict)」という形式として扱われます。これは、現実の辞書で言葉を引くように、「キー(鍵)」を指定して「値(データ)」を取り出す仕組みです。プログラミング未経験の方でも、以下のサンプルコードを見れば直感的に理解できるはずです。
# 読み込んだ辞書データから値を取り出す例
print(loaded_data["name"]) # → 結果: Hanako
print(loaded_data["age"]) # → 結果: 30
# リスト形式の場合は、番号(インデックス)を指定します
print(loaded_data["hobbies"][0]) # → 結果: reading
上記のコードにある loaded_data["name"] という書き方は、「loaded_dataという箱の中から、"name"というラベルが付いた中身を取り出してね」という命令です。Pythonでは、JSONの階層構造をそのまま「辞書の中にリストがある」「辞書の中にさらに辞書がある」といった形で保持できるため、複雑なデータも整理された状態でスムーズに操作することが可能です。
例えば、趣味(hobbies)のように複数のデータが並んでいる場合は、[0]のように番号を指定することで、1番目の要素をピンポイントで取得できます。このように、JSONを読み込んだ後は、Pythonの基本操作だけで自由自在にデータを活用できるようになります。
5. JSONを扱うときの注意点:初心者がハマりやすい4つのポイント
PythonでJSONファイルを読み書きする際、初心者が特につまずきやすいポイントがいくつかあります。エラーを防ぎ、正しくデータを保存するために、以下の4つの注意点を押さえておきましょう。
- 適切な拡張子:ファイル名は必ず
.jsonで終わるようにします(例:customer_data.json)。 - 文字コードの指定:日本語を扱う際は、ファイルを開くときに
encoding="utf-8"を指定しないと、読み込み時にエラーや文字化けが発生する原因になります。 - 保存できるデータ型:JSONは「辞書(dict)」や「リスト(list)」形式が基本です。Python独自の特殊なクラスなどはそのまま保存できないため注意が必要です。
- 日本語の「エスケープ」対策:標準では日本語が
\u3042のような記号に変換されてしまいます。これを防ぐにはensure_ascii=Falseという設定が必須です。
日本語を正しく保存するサンプルコード
実際に、日本語を含むデータを安全に保存するプログラムを見てみましょう。この書き方が、PythonでJSONを扱う際の「最も標準的で安全な形」です。
import json
# 保存したいデータ(名前と挨拶)
user_info = {
"name": "田中太郎",
"message": "こんにちは!Pythonの世界へようこそ。"
}
# ファイルへの書き込み(注意点を網羅した書き方)
with open("user.json", "w", encoding="utf-8") as f:
# ensure_ascii=False を入れることで日本語がそのまま保存されます
# indent=4 を入れると、メモ帳で見た時に読みやすくなります
json.dump(user_info, f, ensure_ascii=False, indent=4)
print("JSONファイルの保存が完了しました!")
JSONファイルは非常にシンプルな構造なので、プログラミング経験がない方でも、Windowsの「メモ帳」やMacの「テキストエディット」で中身を直接開いて確認・編集することが可能です。 まずはこの基本形をテンプレートとして覚えておくと、データの管理がぐっと楽になります。
6. JSONとCSVの違いってなに?
PythonではCSVファイルもよく使われます。CSVは表形式(カンマ区切り)のデータで、Excelのような表に向いています。対してJSONは、複雑な構造(入れ子やリスト)をもつデータに向いています。
たとえば、1人の人に複数の趣味があるようなデータは、CSVよりもJSONの方が相性が良いです。
どちらを使うかは、データの性質や使う目的によって選ぶようにしましょう。