プログラミング時にちょっとしたデータを扱い時に利用できるのがJSON(JavaScript Object Notation)です。
PythonにはJSONをエンコード、
デコードするための「json」ライブラリがありますので、
今回は利用方法を紹介します。
環境変数や設定ファイルとしても大変重宝するので、
この機会にしっかり学びましょう。
目次
JSON形式データの読み込み
JSON形式のデータを読み込むためには「json.loads()」ライブラリを使用する必要があります。
「json.loads()」は文字列型で扱う点に注意してください。
また読み込んだデータはディクショナリ型のデータになります。
以下、JSON形式のデータを読み込んだ時のサンプルになります。
>>> import json
>>>
>>> jsonString = """
... {
... "name": "Yamada Taro",
... "address": "yamadataro@xxxxxx.com"
... }
... """
>>>
>>> jsonDict = json.loads(jsonString)
>>>
>>> print(jsonDict["name"])
Yamada Taro
>>> print(jsonDict["address"])
yamadataro@xxxxxx.com
>>>
JSON形式”ファイル”の読み込み
JSON形式のファイルを読み込むには、
「open()」と「json.load()」ライブラリを使用して行います。 以下が今回使用するサンプルのJSON形式ファイルです。
{
name: Yamada Taro,
address: yamadataro@xxxxxx.com
}
以下、JSON形式のファイルを読み込んだ時のサンプルになります。
>> import json
>>>
>>> with open("sample.json", "r", encoding="utf-8") as jsonfile:
... jsonDict = json.load(jsonfile.read())
...
>>> print(jsonDict["name"])
Yamada Taro
>>> print(jsonDict["address"])
yamadataro@xxxxxx.com
>>>
「json.loads()」は文字列型を扱う点に注意してください。
ファイルを扱うのは「json.load()」です、
「s」が付かないので注意してください。
そのためファイルからJSONファイルを読み込み時はバイナリ形式から文字列にエンコードする必要があります。
エンコードはファイルオブジェクトの「read()」メソッドを使用します。
これを忘れると
TypeError: the JSON object must be str, bytes or bytearray, not 'TextIOWrapper'
が発生します。
>>> import json
>>>
>>> with open("sample.json", "r", encoding="utf-8") as jsonfile:
... jsonDict = json.load(jsonfile)
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "C:\Users\xxxxx\xxxxx\Local\Programs\Python\Python36\lib\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'
JSON形式”ファイル”の書き込み
JSON形式のファイルを読み込むには、
「open()」と「json.dumps()」ライブラリを使用して行います。
以下、JSON形式でファイルに書き込むサンプルになります。
import json
jsonString =
{
name: Yamada Taro,
address: yamadataro@xxxxxx.com
}
with open(test.json, w, encoding=utf-8) as jsonfile:
json.dump(jsonString, jsonfile)