PythonでJSONを扱う方法
PythonでJSONを扱うには、jsonモジュールを使用します。
このモジュールはPythonに標準で搭載されており、JSON形式のデータを扱うための便利な機能を提供します。
以下に、JSONの読み込み、書き込み、変換方法について説明します。
JSONの読み込み
JSONデータをPythonで扱うためには、まずそのデータを読み込む必要があります。
JSONデータは通常、文字列形式やファイル形式で提供されます。
文字列からJSONデータを読み込むには、json.loads()関数を使用します。
ファイルからJSONデータを読み込むには、json.load()関数を使用します。
import json # 文字列からJSONを読み込む json_string = '{"name": "John", "age": 30, "city": "New York"}' data = json.loads(json_string) print(data) # 出力: {'name': 'John', 'age': 30, 'city': 'New York'} # ファイルからJSONを読み込む with open('data.json', 'r') as file: data = json.load(file) print(data)
JSONの書き込み
PythonのデータをJSON形式で保存するには、json.dumps()関数またはjson.dump()関数を使用します。
json.dumps()はPythonオブジェクトをJSON文字列に変換しますが、json.dump()はPythonオブジェクトをJSONファイルに書き込みます。
import json # JSON文字列として変換する data = {'name': 'John', 'age': 30, 'city': 'New York'} json_string = json.dumps(data) print(json_string) # 出力: {"name": "John", "age": 30, "city": "New York"} # JSONファイルに書き込む with open('data.json', 'w') as file: json.dump(data, file)
JSONの変換オプション
json.dumps()およびjson.dump()には、いくつかの便利な引数があります。
例えば、indent引数を指定すると、出力するJSONデータを整形して見やすくすることができます。
また、sort_keys引数をTrueにすると、キーがアルファベット順にソートされます。
import json data = {'name': 'John', 'age': 30, 'city': 'New York'} # 整形して出力 json_string = json.dumps(data, indent=4) print(json_string) # 出力: # { # "name": "John", # "age": 30, # "city": "New York" # } # ソートされたキーで出力 json_string = json.dumps(data, sort_keys=True, indent=4) print(json_string) # 出力: # { # "age": 30, # "city": "New York", # "name": "John" # }
JSONとPythonオブジェクトの互換性
JSONとPythonオブジェクトの間には、対応するデータ型があります。
例えば、JSONのオブジェクトはPythonの辞書(dict)に対応し、JSONの配列はPythonのリスト(list)に対応します。
数値、文字列、ブール値、null(None)も直接対応していますが、JSONのキーは文字列でなければなりません。
import json # JSONのデータ型とPythonのデータ型の対応 data = { "name": "John", "age": 30, "is_student": False, "courses": ["Math", "Science"], "address": None } # JSON文字列に変換 json_string = json.dumps(data) print(json_string) # 出力: {"name": "John", "age": 30, "is_student": false, "courses": ["Math", "Science"], "address": null} # Pythonオブジェクトに変換 parsed_data = json.loads(json_string) print(parsed_data) # 出力: {'name': 'John', 'age': 30, 'is_student': False, 'courses': ['Math', 'Science'], 'address': None}
JSONの取り扱いは非常にシンプルで直感的ですが、大きなデータや複雑なデータ構造を扱う際には、パフォーマンスやメモリ使用量に注意する必要があります。
jsonモジュールは、データの保存や交換の際に非常に便利で、Pythonでのデータ操作を効率的に行うための強力なツールです。