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処理を提供するライブラリもありますので、必要に応じて使用することができます。