首页 > 解决方案 > 当我修改嵌套字典的 json 中的值时,它正在删除其他字典

问题描述

我试图弄清楚如何修改 json 文件中的值。我已将其简化为两个字典的字典。我可以修改 json 文件中的值,但生成的 json 文件不再是字典的字典,只是包含我修改的值的一个字典。有什么想法可以解决这个问题吗?

原始json文件

{
    "test_settings":
        {
            "rigID":"r1",
            "test":"blank"
        },
    "temperature_settings":
        {
            "temperature_start":"40.1",
            "temperature_stop":"blank",
            "temperature_step":"blank"
        }
}

我的代码

import json

def modify_json_file(json_file):
    with open(json_file, "r") as input_json:
        json_data = json.load(input_json)
        print("type of data: ", type(json_data))
        for k,v in json_data.items():
            print(k,v)
        print('\n'*2)
        temperature_settings = json_data["temperature_settings"]
        print("type of temperature_settings: ", type(temperature_settings))
        print(temperature_settings["temperature_start"])
    temperature_settings["temperature_start"] = 99.9
    with open(json_file, "w") as input_json:
        json_data = json.dump(temperature_settings, input_json)


print('\n'*25)
modify_json_file("file6.json")

现在听

{"temperature_start": 99.9, "temperature_stop": "blank", "temperature_step": "blank"}

期望的结果

{
    "test_settings":
        {
            "rigID":"r1",
            "test":"blank"
        },
    "temperature_settings":
        {
            "temperature_start":"99.9",
            "temperature_stop":"blank",
            "temperature_step":"blank"
        }
}

标签: pythonjsondictionary

解决方案


好吧,您只回信temperature_settings,所以您只能得到...只需使用:

with open(json_file, "w") as input_json:
    json.dump(json_data, input_json)

得到预期的结果。


推荐阅读