JSON(JavaScript Object Notation)は、Webアプリケーションでよく使用される軽量のデータ交換フォーマットです。PythonのJSONモジュールは、PythonオブジェクトとJSONデータの間で相互変換を可能にします。Pythonの辞書オブジェクトをJSON形式にエンコードする方法、そしてJSON形式の文字列をPythonオブジェクトにデコードする方法を説明します。
JSONデータのエンコード
以下は、Pythonの辞書オブジェクトをJSON形式の文字列にエンコードする方法です。
import json
# Pythonの辞書オブジェクト
person = {
"name": "John",
"age": 30,
"city": "New York"
}
# JSON形式の文字列にエンコード
person_json = json.dumps(person)
# エンコードされたJSONデータのタイプを出力
print(type(person_json)) # <- <class 'str'> が出力される
# エンコードされたJSONデータを出力
print(person_json) # <- {"name": "John", "age": 30, "city": "New York"}上記の例では、 json.dumps() 関数を使用して、Pythonの辞書オブジェクト person をJSON形式の文字列に変換しました。person_json 変数に代入されたJSON形式の文字列を print() 関数で出力することで、エンコードされたJSONデータを確認できます。
JSONデータのデコード
以下は、JSON形式の文字列をPythonオブジェクトにデコードする方法です。
import json
# JSON形式の文字列
person_json = '{ "name": "John", "age": 30, "city": "New York" }'
# JSON形式の文字列をPythonオブジェクトにデコード
person = json.loads(person_json)
# デコードされたPythonオブジェクトのタイプを出力
print(type(person)) # <- <class 'dict'>
# デコードされたPythonオブジェクトを出力
print(person) # <- {'name': 'John', 'age': 30, 'city': 'New York'}
# Pythonオブジェクトから要素を取得して出力
print(person['age']) # <- 30上記の例では、 json.loads() 関数を使用して、JSON形式の文字列 person_json をPythonの辞書オブジェクト person に変換しました。person 変数に代入されたPythonオブジェクトを print() 関数で出力することで、デコードされたPythonオブジェクトを確認できます。
JSONファイルの読み込み
json.load() 関数を使用することで、JSON形式のファイルをPythonオブジェクトに変換できます。例えば、以下のように使用します。
{ "name": "John", "age": 30, "city": "New York" }import json
with open('sample03.json') as f:
data = json.load(f)
# 読み込んだデータのタイプを表示
print(type(data)) # <- <class 'dict'>
# 読み込んだデータ内容を表示
print(data) # <- {'name': 'John', 'age': 30, 'city': 'New York'}
# 読み込んだデータの値を取得
print(data['city']) # <- New York上記の例では、 example.json ファイルを開いて、 json.load() 関数でJSON形式のデータをPythonオブジェクトに変換し、 data 変数に代入しています。print() 関数で data 変数を出力することで、JSONファイルの中身を確認できます。
json.load() と json.loads() の使い分けについては下記ページで記載しています。よかったらそちらも参考にしてみてください。

JSONファイルの書き込み
json.dump() 関数を使用することで、PythonオブジェクトをJSON形式のファイルに書き込むことができます。例えば、以下のように使用します。
import json
person = {
"name": "John",
"age": 30,
"city": "New York"
}
with open('sample04.json', 'w') as f:
json.dump(person, f)実行結果として、以下のようなデータで、ファイル名「sample04.json」として出力されます。
{ "name": "John", "age": 30, "city": "New York" }上記の例では、 person 辞書オブジェクトを person.json ファイルに書き込んでいます。ファイルを開くモードには、 w を指定しているため、既存のファイルがある場合には上書きされます。もし、ファイルを新規作成する場合には、 x モードを使用することができます。
まとめ
以上が、JSONモジュールの基本的な使い方となります。JSONデータのエンコードやデコード、ファイルの読み込みや書き込みは、PythonでJSONデータを扱う際に非常に重要な操作となります。JSONモジュールの他にも、 simplejson や ujson などの高速なJSON処理を提供するライブラリもありますので、必要に応じて使用することができます。
