Pythonが初めてで、JSONデータで遊んでいます。JSONデータをファイルから取得し、そのデータにJSONのキー値を「オンザフライ」で追加したいと思います。
つまり、私のjson_file
には、次のようなJSONデータが含まれています。
{"key1": {"key1A": ["value1", "value2"], "key1B": {"key1B1": "value3"}}}
上記のデータに"ADDED_KEY": "ADDED_VALUE"
キーと値の部分を追加して、スクリプトで次のJSONを使用したいと思います。
{"ADDED_KEY": "ADDED_VALUE", "key1": {"key1A": ["value1", "value2"], "key1B": {"key1B1": "value3"}}}
上記を達成するために、次のようなものを作成しようとしています。
import json
json_data = open(json_file)
json_decoded = json.load(json_data)
# What I have to make here?!
json_data.close()
きみの json_decoded
オブジェクトはPython辞書です。キーを追加するだけで、ファイルを再エンコードして書き換えることができます。
import json
with open(json_file) as json_file:
json_decoded = json.load(json_file)
json_decoded['ADDED_KEY'] = 'ADDED_VALUE'
with open(json_file, 'w') as json_file:
json.dump(json_decoded, json_file)
ここでは、開いているファイルオブジェクトをコンテキストマネージャーとして(with
ステートメントを使用して)使用したため、Python完了したら自動的にファイルを閉じます。
Json.loads()から返されたJsonは、ネイティブpythonリスト/辞書のように動作します:
import json
with open("your_json_file.txt", 'r') as f:
data = json.loads(f.read()) #data becomes a dictionary
#do things with data here
data['ADDED_KEY'] = 'ADDED_VALUE'
#and then just write the data back on the file
with open("your_json_file.txt", 'w') as f:
f.write(json.dumps(data, sort_keys=True, indent=4, separators=(',', ': ')))
#I added some options for pretty printing, play around with them!
詳細については、 公式ドキュメント をご覧ください
できるよ
json_decoded['ADDED_KEY'] = 'ADDED_VALUE'
OR
json_decoded.update({"ADDED_KEY":"ADDED_VALUE"})
複数のキー/値ペアを追加したい場合にうまく機能します。
もちろん、最初にADDED_KEYの存在を確認することもできます-ニーズによって異なります。
そして、そのデータをファイルに保存したいと思うかもしれません
json.dump(json_decoded, open(json_file,'w'))