pythonでjsonファイルの読み書き

jsonファイルの読み書き,python

今回はpythonでjsonファイルの読み書きをしようと思います。

はじめに

ツールを作成する際、設定ファイルを用意しておいてツールに読み込ませて動作させることってありますよね。

pythonで設定ファイルを扱う場合、jsonファイルにしておけば辞書型でそのまま扱えるので便利だなと思い、使い方をメモ代わりに残しておきます。

JSONファイル操作

JSONファイルの基本

JSONJavaScript Object Notation)は「JavaScriptのオブジェクトの書き方を元にしたデータ定義方法」のことです。

JSONの構造は、前述の通りpythonの辞書型と同じで{KEY:VALUE}の形式で各要素を定義します。

{
    "str": "aaa",
    "int": 10 ,
    "list":[1,2,3,"bbb"]
}

ライブラリ

pythonの標準ライブラリであるjsonを使用します。

import json

JSON形式の文字列を辞書型に変換

json.loadを使用することで、JSON形式の文字列を辞書型に変換できます。

import json

f = open("test.json" , "r")
json_dict = json.load(f)

print(json_dict)
print(type(json_dict))
print(type(json_dict["str"]))
print(type(json_dict["int"]))
print(type(json_dict["list"]))

上記コードの出力結果は以下です。

{'str': 'aaa', 'int': 10, 'list': [1, 2, 3, 'bbb']}
<class 'dict'>
<class 'str'>
<class 'int'>
<class 'list'>

辞書型をJSON形式の文字列へ変換

json.dumpを使用することで、辞書型をJSON形式の文字列へ変換できます。

import json

f = open("test.json" , "r")
json_dict = json.load(f)
json_dict["int"] = json_dict["int"]*10
with open('test.json', mode='wt', encoding='utf-8') as file:
    json.dump(json_dict, file, ensure_ascii=False, indent=4)

引数次第でインデントなどの細かいフォーマットを指定できます。詳細については以下参照。