目的
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で取り扱うことができました。