Pythonでファイルに書き込まれたJSON文字列をパースする方法を確認したのでメモ。
方法(json.load()
)
このようなファイルなら、
data.json
{
"data":{
"a": "こんにちは",
"b": 123
},
"c": true
}
open()
で取得したデータに対し**json.load()
**を利用すればJSONパースできる。
import json
raw = open('data.json', 'r')
type(raw)
# <class '_io.TextIOWrapper'>
parsed = json.load(raw)
type(parsed)
# <class 'dict'>
parsed
# {'data': {'a': 'こんにちは', 'b': 123}, 'c': True}
print(json.dumps(parsed, ensure_ascii=False, indent=4))
#{
# "data":{
# "a": "こんにちは",
# "b": 123
# },
# "c": true
#}
駄目な方法(json.loads
)
-
json.loads
は、TextIOWrapperタイプのデータはパースできない。
json.loads(raw)
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# File "/usr/lib64/python3.6/json/__init__.py", line 348, in loads
# 'not {!r}'.format(s.__class__.__name__))
# TypeError: the JSON object must be str, bytes or bytearray, not 'TextIOWrapper'
以上