web-dev-qa-db-ja.com

Pythonでファイルから取得したJSONデータにKey-Valueを追加する方法は?

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()
16
Backo

きみの 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完了したら自動的にファイルを閉じます。

17
Martijn Pieters

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!

詳細については、 公式ドキュメント をご覧ください

5
0xff

できるよ

json_decoded['ADDED_KEY'] = 'ADDED_VALUE'

OR

json_decoded.update({"ADDED_KEY":"ADDED_VALUE"})

複数のキー/値ペアを追加したい場合にうまく機能します。

もちろん、最初にADDED_KEYの存在を確認することもできます-ニーズによって異なります。

そして、そのデータをファイルに保存したいと思うかもしれません

json.dump(json_decoded, open(json_file,'w'))
2
bsoist