目的
python初心者です。
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形式にエンコードしてファイル保存するメソッドですので、間違えないようします。
dumpsのsがstr型の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と同様に.loadsとloadがありますので、注意します。
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: obj を JSON 形式に変換してfp (ファイルオブジェクト) へ流し込みます。
json.dump(obj, fp, *)
dumps: objを JSON 形式の 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で取り扱うことができました。