Python から JSON へ変換

ここでは Python でデータを JSON 形式に変換する方法についてご説明します。

Python オブジェクトから JSON への変換表

Python のオブジェクトを JSON に変換するには json モジュールを使って行うことができます。

デフォルトで JSON への変換がサポートされている Python のオブジェクトは以下のもので、それぞれ次のように変換されます。

PythonJSON
dict(辞書)object
list(リスト)array
tuple(タプル)array
str(文字列)string
int(整数)number
float(浮動小数点数)number
True(ブール値)true
False(ブール値)false
Nonenull

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 へ変換


以上、Python でデータを JSON 形式に変換する方法についてご説明しました。

© 2024 やさしい Python 入門