[Python]json読み込み、loadとloadsの違い

4636 ワード

loadsとdumpsの基本的な使い方

main.py
import json

# ただの文字列
json_str = "{'taro': {'age': 18, 'gender': 'male', 'email': '[email protected]'}}"

# loadsは文字列を引数にとり、辞書型で返します。
json_dict = json.loads(json_str)

# dumpsは辞書型を引数にとり、文字列で返します。
json_str = json.dumps(json_dict)

実はloadsに似たものでloadというのもあります。
違いについては次で説明します。

loadsとloadの違い

jsonファイル、sample.jsonのageの値を表示したいとします。
{ "name": "Tanaka", "age": 26 }

main.py
import json

with open('sample.json', 'r') as f:
    json_str = f.read() # loadsは「文字列」を引数に取る。つまり、「ファイルオブジェクト型」である f は受け取れない。よって、f.readを使って一度「文字列」にする。
    json_dict = json.loads(json_str) # 文字列で読み込む
    
    print(json_dict['age'])

main.py
import json

with open('sample.json', 'r') as f:
   json_dict = json.load(f) # loadは 「ファイルオブジェクト型」を引数に取るので、f を直接渡せる。
   
   print(json_dict['age'])

with openでjsonを読み込むならloadを使った方が、f.readがいらない分短く済む。
dumpについてはまた別記事で書こうと思ってます。

因みに、loadsのsはstringのsらしいです。なるほどね

読んでくれてありがとう😭
分かりにくい所があれば遠慮なくご指摘ください