Python から JSON へ変換
ここでは Python でデータを JSON 形式に変換する方法についてご説明します。
Python オブジェクトから JSON への変換表
Python のオブジェクトを JSON に変換するには json モジュールを使って行うことができます。
デフォルトで JSON への変換がサポートされている Python のオブジェクトは以下のもので、それぞれ次のように変換されます。
Python | JSON |
---|---|
dict(辞書) | object |
list(リスト) | array |
tuple(タプル) | array |
str(文字列) | string |
int(整数) | number |
float(浮動小数点数) | number |
True(ブール値) | true |
False(ブール値) | false |
None | null |
Python オブジェクトを JSON 文字列に変換する
Python でデータを JSON 形式に変換するには、json モジュールの dumps() 関数を使って行うことができます。
例えば、次のような辞書オブジェクトを JSON の文字列に変換したい時は、次のようにできます。
import json
student = {
"name": "Suzuki",
"age": 15,
"gender": "male"
}
student_json = json.dumps(student)
print(student)
print(type(student))
print(student_json)
print(type(student_json))
実行結果は次のようになります。 print() すると同じようにみえますが、型を確認すると、student_json の型が文字列になっているのがわかります。
Python オブジェクトを JSON 文字列にフォーマットして変換する
dumps() 関数の引数に indent を指定することによって、改行やインデントを挿入して読みやすい状態にフォーマットして変換することができます。
例えば、indent="" とすると JSON の文字列に改行が入り、indent="\t" と指定すると改行とタブでインデントが入り、indent=4 のように指定すると、改行と空白を 4 つ使ったインデントが入ります。
先ほどの辞書オブジェクトを index=4 でフォーマットして変換すると次のようになります。
import json
student = {
"name": "Suzuki",
"age": 15,
"gender": "male"
}
print(json.dumps(student, indent=4))
実行結果は次のようになり、改行とスペース 4 つのインデントが入っています。
{
"name": "Suzuki",
"age": 15,
"gender": "male"
}
Python オブジェクトを JSON ファイルに書き出す
Python でデータを JSON に変換するのと同時にファイルに書き込むには json モジュールの dump() 関数が使えます。
dump() 関数の必須の引数は「変換して書き出したいオブジェクト」と「書き込み先のファイルオブジェクト」です。
また、dump() 関数と同様に index の引数を指定して、ファイルに出力される JSON の文字列をフォーマットすることができます。
例えば、student 辞書オブジェクトを student.json という名前のファイルに出力したい時は、次のようにできます。
import json
student = {
"name": "Suzuki",
"age": 15,
"gender": "male"
}
with open("student.json", "w") as f:
json.dump(student, f, indent=4)
上のコードを実行すると、現在のディレクトリに student.json ファイルが生成されました。
以上、Python でデータを JSON 形式に変換する方法についてご説明しました。