こんにちは!シミダイ(@shimidai2100)です。
プログラミング時にちょっとしたデータを扱い時に利用できるのがJSON(JavaScript Object Notation)です。
PythonにはJSONをエンコード、デコードするための「json」ライブラリがありますので、今回は利用方法を紹介します。
環境変数や設定ファイルとしても大変重宝するので、この機会にしっかり学びましょう。
JSON形式データの読み込み
JSON形式のデータを読み込むためには「json.loads()」ライブラリを使用する必要があります。
「json.loads()」は文字列型で扱う点に注意してください。
また読み込んだデータはディクショナリ型のデータになります。
以下、JSON形式のデータを読み込んだ時のサンプルになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
>>> 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形式ファイルです。
1 2 3 4 |
{ "name": "Yamada Taro", "address": "yamadataro@xxxxxx.com" } |
以下、JSON形式のファイルを読み込んだ時のサンプルになります。
1 2 3 4 5 6 7 8 9 10 |
>>> 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'」が発生します。
1 2 3 4 5 6 7 8 9 10 |
>>> 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形式でファイルに書き込むサンプルになります。
1 2 3 4 5 6 7 8 9 10 11 |
import json jsonString = """ { "name": "Yamada Taro", "address": "yamadataro@xxxxxx.com" } """ with open("test.json", "w", encoding="utf-8") as jsonfile: json.dump(jsonString, jsonfile) |