Python プログラミング

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

2018年9月19日

こんにちは!シミダイ(@shimidai2100)です。

プログラミング時にちょっとしたデータを扱い時に利用できるのが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)

 

関連記事

-Python, プログラミング

Copyright© shimidai2100 , 2020 All Rights Reserved.