PythonでJSONを扱う方法

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でのデータ操作を効率的に行うための強力なツールです。