🍣

【Python】JSON 形式のデータを辞書型のオブジェクトとして利用する

2024/03/25に公開

※この記事はQiitaの本記事にて投稿した記事に加筆・修正し、移行した記事です。

JSON 形式のデータは辞書型のオブジェクトとして利用できる

拡張子が.jsonのファイルや、WebAPI を叩いて得られた JSON 形式のデータは
Python 上において、辞書型のオブジェクトとして利用することができます。

要約

  • Python において、JSON 形式のデータは辞書型のオブジェクトとして利用ができる。
  • jsonモジュールを利用する。
  • ファイルの読み込みは json.load() を利用する。
  • 文字列の読み込みは json.loads() を利用する。
  • 書き込みには json.dumps() を利用する。

JSON モジュールについて

Python において、JSON 形式データを利用するためには json モジュールを import する必要があります。

import json

json モジュールを使ってみる

json モジュールを使用して、JSON 形式のデータを読み書きしてみます。

辞書型のデータを作成し、JSON ファイルに保存する

Python で作成した辞書型のオブジェクトは、json モジュールを利用することで、JSON ファイルに保存することができます。

json_write.py
import json

d = {"name":"ndj", "place":["Qiita", "Twitter", "YouTube"], "age": 25}

with open("ndj.json", mode="w") as f:
    d = json.dumps(d)
    f.write(d)

ndj.json
{
    "name": "ndj", 
    "place": ["Qiita", "Twitter", "YouTube"], 
    "age": 25
}

辞書型のオブジェクトを JSON 形式のファイルに保存するためには、json.dumps()を用いて、
辞書型のオブジェクトを文字列型に変換する必要があります。

json.dumps() は、キーを強制的に文字列へ変換する

個人的に注意したい点としては、json.dumps()を行った際に、全てのキーに対して、文字列型への強制的な変換が行われることですね。

write_json.py
import json

d = {1:"one", 100:"hundred", 1000:"thousand"}

with open("numbers.json", mode="w") as f:
    d = json.dumps(d)
    f.write(d)
numbers.json
{
     "1": "one", 
     "100": "hundred", 
     "1000": "thousand"
}

保存した JSON 形式のデータを読み込み、辞書型のオブジェクトに変換する

上記で保存した JSON 形式のファイルは辞書型のオブジェクトとして利用することができます。
WebAPI などを叩いて得られた JSON 形式のデータも同様です。

JSON ファイルを読み込む際は、 json.load() を用いる

開いたファイルに対して、 json.load() を用いることで、辞書型のオブジェクトを得ることができます。

read_json.py
import json

d = {}
with open("ndj.json", mode="r") as f:
    d = json.load(f)

文字列型のオブジェクトを辞書型に変換する際は、json.loads() を用いる

json.load() を用いた場合と同様に、辞書型に変換することができます。

read_json.py
import json

s = '{"name": "ndj", "place": ["Qiita", "Twitter", "YouTube"], "age": 25}'
d = {}
d = json.loads(s)

参考

Python公式ドキュメント: json

Discussion