PythonでのJSONファイルの読み書きは、非常に基本的でありながら実用的なスキルです。設定ファイルの保存、Web APIとの通信、データの永続化など、さまざまな場面で活躍します。本記事では、Python初心者にもわかりやすいように、JSONとは何かから始まり、Pythonでの読み書きの方法を丁寧に解説していきます。
「JSON」とは
「JSON(JavaScript Object Notation)」とはテキストデータをベースとした広く普及している形式です。MIMEタイプは「application/json」で拡張子は「.json」です。
jsonはPythonの標準モジュールに含まれているため、ウェブスクレイピングをする上で頻繁に出くわす形式です。特にAPIの出力形式がjsonの場合が多いです。
JSONの特徴
- キーと値のペアでデータを表現
- ネスト(入れ子構造)が可能
- 文字列、数値、配列、オブジェクト、真偽値、nullが使える
JSONの例:
{
"name": "Taro",
"age": 25,
"languages": ["Japanese", "English"]
}
このような形式のデータを、Pythonで読み込んだり、書き込んだりできるようになります。
PythonでJSONを扱うには?
Pythonでは標準ライブラリのjson
モジュールを使って、簡単にJSONの読み書きができます。
import json
このモジュールには以下のような関数があります:
json.load()
: ファイルからJSONを読み込むjson.loads()
: 文字列からJSONを読み込むjson.dump()
: JSONをファイルに書き込むjson.dumps()
: JSONを文字列として書き出す
JSONの読み込み(ファイルから)
まずは、JSONファイルからデータを読み込む基本的な方法を見てみましょう。
例:data.json の中身
{
"name": "Hanako",
"age": 30,
"skills": ["Python", "HTML"]
}
Pythonで読み込むコード
import json
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
print(data)
print(data['name'])
出力結果:
{'name': 'Hanako', 'age': 30, 'skills': ['Python', 'HTML']}
Hanako
このように、JSONはPythonの辞書型(dict)として読み込まれます。
JSONファイルへの書き込み
今度は、Pythonの辞書型データをJSONファイルとして保存する方法です。
Pythonコード例:
data = {
"title": "Python入門",
"level": "beginner",
"published": True
}
with open('output.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
出力される output.json の内容:
{
"title": "Python入門",
"level": "beginner",
"published": true
}
ポイント:
ensure_ascii=False
にすると、日本語が文字化けせず保存されます。indent=2
を指定することで、読みやすい整形(インデント)が行われます。
JSON文字列の読み書き(ファイルではなくメモリ上)
ファイルを使わず、JSON文字列を直接扱う場合は loads()
と dumps()
を使います。
読み込み:
json_str = '{"name": "Ken", "age": 40}'
data = json.loads(json_str)
print(data['age'])
書き出し:
data = {"language": "Python", "version": 3.11}
json_str = json.dumps(data, indent=2)
print(json_str)
JSONを使うときの注意点
1. Pythonのデータ型とJSONの対応表
Python型 | JSON型 |
---|---|
dict | object |
list | array |
str | string |
int/float | number |
True/False | true/false |
None | null |
2. JSONファイルの読み込みエラー
- ファイルが存在しない →
FileNotFoundError
- JSONの形式が正しくない →
json.JSONDecodeError
対処例:
try:
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
except FileNotFoundError:
print("ファイルが見つかりません")
except json.JSONDecodeError:
print("JSON形式が正しくありません")
実用的な例:設定ファイルとしてのJSON
アプリケーションの設定をJSONに保存すると、外部ファイルとして柔軟に管理できます。
config.json
{
"theme": "dark",
"font_size": 14,
"language": "ja"
}
Pythonで設定を読み込む
with open('config.json', 'r', encoding='utf-8') as f:
config = json.load(f)
if config['theme'] == 'dark':
print("ダークモードで表示")
まとめ
- JSONはデータの保存や通信に非常に便利なフォーマット
- Pythonでは
json
モジュールを使うことで、簡単に読み書きできる - ファイルを使う方法と文字列を扱う方法の両方を理解しておくと便利
- 実用例としては、設定ファイルやAPIレスポンスの保存などがある
これで、PythonにおけるJSONファイルの読み書きの基本をマスターできました!