ゆとり世代の自由研究

勉強が一生終わりません

pythonでJSONを扱う方法

目的

 webAPIで取得したJSON形式データをpythonで取り扱いたいと思います。
JSONとは、{}などを用いた記法であり、そのままでは文字列型であることから、 dict型などpythonオブジェクトに変換して取り扱う必要があります。
https://docs.python.org/ja/3/library/json.html

JSONライブラリ

 最初にimportします。

import json

エンコード方法(pythonオブジェクトをJSON形式に変換)

 pythonオブジェクトをJSON形式に変換するするために.dumpsメソッドを使用します。
 変換されたJSON形式のデータ型はstr型です。
 よく似た名前のメソッドにdumpがありますが、これはデータをJSON形式にエンコードしてファイル保存するメソッドですので、間違えないようします。
dumpssstr型のsかどうかはわかりませんが、s付きはstr変換、sなしはファイル変換と覚えるようにしています。

js = json.dumps([1, 2, 3, {'4': 5, '6': 7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
print(type(js))
print(js)

結果

<class 'str'>
[1,2,3,{"4":5,"6":7}]

デコード方法(JSON形式からpythonオブジェクトに変換)

 JSONデータ形式に変換するために.loadsメソッドを使用します。
 例えば、変換されたリスト形式のデータ型はlist型です。
.dumpsと同様に.loadsloadがありますので、注意します。

js = json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
print(type(js))
print(js)

結果

<class 'list'>
['foo', {'bar': ['baz', None, 1.0, 2]}]

変換表(エンコード)

PYTHON JSON
dict object
list, tuple array
str string
int、float と int や float の派生列挙型 number
True true
False false
None null

dumpとdumps(書き込み)

dump: objJSON 形式に変換してfp (ファイルオブジェクト) へ流し込みます。

json.dump(obj, fp, *)

dumps: objJSON 形式の str オブジェクトに変換します。

json.dumps(obj, *)

loadとloads(読み取り)

load: JSON形式のfp (ファイルオブジェクト) を読み取り、pythonオブジェクトに変換します。

json.load(fp, *)

loads: JSON形式のstrインスタンスpythonオブジェクトに変換します。

json.loads(s, *)

結論

 JSON形式のデータファイルを.loadメソッドでpythonオブジェクトに変換する。
 データインスタンスであれば、loadsメソッドでpythonオブジェクトに変換する。
 ⇒dict型、list型としてpythonで取り扱います。