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プログラムで効率的にデータのやり取りを行いましょう。
