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

プログラミング時にちょっとしたデータを扱い時に利用できるのが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)
よかったらシェアしてね!
  • URLをコピーしました!
目次