Python

[Python] JSON形式データの読み込み・書き込み

2018年9月19日

こんにちは!土門大貴(daikidomon)です。

プログラミング時にちょっとしたデータを扱い時に利用できるのが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形式でファイルに書き込むサンプルになります。

mport json

jsonString = """
{
  "name": "Yamada Taro",
  "address": "yamadataro@xxxxxx.com"
}
"""

with open("test.json", "w", encoding="utf-8") as jsonfile:
json.dump(jsonString, jsonfile)

関連記事

-Python

Copyright© スタートアップIT企業社長のブログ , 2020 All Rights Reserved.