我在 python 应用程序中使用 JSON 配置文件。我想要一个带有层次结构的默认配置。
用户配置应仅包含与默认值不同的参数。我当前的解决方案是:
# default.json
{
"parA" : 1,
"parB" : {
"sparA" : 0,
"sparB" : 1
}
}`
# user.json
{
"parB" : {
"sparB" : 9
}
}
Run Code Online (Sandbox Code Playgroud)
配置是通过加载的
default_json = open("default.json")
default_config = json.load(default_json)
default_json.close()
user_json = open("user.json")
user_config = json.load(user_json)
user_json.close()
config = default_config.copy()
config.update(user_config)
Run Code Online (Sandbox Code Playgroud)
这样做的问题是,整个密钥“parA”被覆盖,因此“sparA”被删除。有没有一种简单的方法可以只覆盖子键而不覆盖整个父键?