我是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()
答案 0 :(得分:16)
您的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在完成后会自动关闭文件。
答案 1 :(得分:5)
json从json.loads()返回的行为就像本机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!
有关详细信息,请查看the official doc
答案 2 :(得分:2)
你可以做到
json_decoded['ADDED_KEY'] = 'ADDED_VALUE'
OR
json_decoded.update({"ADDED_KEY":"ADDED_VALUE"})
如果你想添加多个键/值对,可以很好地工作。
当然,您可能希望首先检查是否存在ADDED_KEY - 取决于您的需求。
我想你可能想要将这些数据保存回文件
json.dump(json_decoded, open(json_file,'w'))