JSON(JavaScript Object Notation)は、データのやり取りに広く使用される軽量なデータ交換フォーマットです。JSONは人間にも読みやすく、機械でも解析しやすい形式でデータを表現します。Pythonでは、標準ライブラリのjson
モジュールを使って、JSONデータの読み書きを簡単に行うことができます。
1. JSONとは?
JSONは、テキスト形式でデータオブジェクトを表現するためのフォーマットです。以下のようなデータ型をサポートしています:
- オブジェクト(辞書に対応)
- 配列(リストに対応)
- 文字列
- 数値(整数および浮動小数点数)
- 真偽値(
true
およびfalse
) null
(None
に対応)
2. PythonでのJSONの操作
Pythonでは、json
モジュールを使用してJSONデータを扱います。以下に基本的な操作方法を示します。
2.1 JSONデータの読み込み
JSONデータをPythonオブジェクトとして読み込むには、json.load
またはjson.loads
を使用します。
JSONファイルから読み込む
import json # JSONファイルを読み込む with open('data.json', 'r') as file: data = json.load(file) print(data)
JSON文字列から読み込む
import json # JSON文字列を読み込む json_string = '{"name": "John", "age": 30, "city": "New York"}' data = json.loads(json_string) print(data)
2.2 JSONデータの書き込み
PythonオブジェクトをJSON形式で保存するには、json.dump
またはjson.dumps
を使用します。
JSONファイルに書き込む
import json # データをJSONファイルに書き込む data = { "name": "John", "age": 30, "city": "New York" } with open('data.json', 'w') as file: json.dump(data, file, indent=4) # indent=4で整形
JSON文字列に変換する
import json # データをJSON文字列に変換する data = { "name": "John", "age": 30, "city": "New York" } json_string = json.dumps(data, indent=4) # indent=4で整形 print(json_string)
2.3. JSON操作の実例
以下は、JSONファイルを読み込み、新しいデータを追加して再度ファイルに書き込む例です。
import json # JSONファイルを読み込む with open('data.json', 'r') as file: data = json.load(file) # 新しいデータを追加 data['email'] = '[email protected]' # 更新されたデータをJSONファイルに書き戻す with open('data.json', 'w') as file: json.dump(data, file, indent=4)
2.4. エラーハンドリング
JSON操作中に発生する可能性のあるエラーを適切に処理することが重要です。
import json # JSONファイルの読み込み時のエラーハンドリング try: with open('data.json', 'r') as file: data = json.load(file) except FileNotFoundError: print('ファイルが見つかりません') except json.JSONDecodeError: print('JSONデコードエラーが発生しました') # JSON文字列の読み込み時のエラーハンドリング json_string = '{"name": "John", "age": 30, "city": "New York"' try: data = json.loads(json_string) except json.JSONDecodeError: print('JSONデコードエラーが発生しました')
まとめ
Pythonのjson
モジュールを使用すると、JSONデータの読み書きが非常に簡単になります。ファイルや文字列からJSONデータを読み込む方法、PythonオブジェクトをJSON形式で保存する方法、エラーハンドリングの方法について学びました。これらの知識を活用して、Pythonプログラムで効率的にデータのやり取りを行いましょう。