【发布时间】:2018-08-18 07:12:04
【问题描述】:
我正在创建一个特定格式的 JSON 文件,因此我想在进一步处理之前验证它是否采用该格式。
模板是这样的
{
"dev":{
"username": "",
"script": "",
"params": ""
},
"qat":{
"username": "",
"script": "",
"params": ""
},
}
该文件将是填充所有值的位置,对于 username、script 和 params,对于 dev 和 qat
现在我想验证一下,包含数据的文件与模板完全相同。现在,我正在使用以下方法。
接近 将这些文件转换为 dict,然后获取所有密钥。然后比较这些键,如果它们相等,则 JSON 文件按照模板,否则不相等。
这按预期工作,但只是想检查是否有更好更简单的方法
代码:
def test_param_file():
with open('../utils/param_template.json') as json_data:
template = json.load(json_data)
with open('/file.json') as json_data:
param_file = json.load(json_data)
assert _get_all_keys(param_file) == _get_all_keys(template)
def _get_all_keys(param):
global prefix
global keys
keys = []
def func(param):
for key, value in param.iteritems():
if type(value) == dict:
global prefix
prefix = key
func(value)
global keys
keys.append("%s.%s" % (prefix, key))
func(param)
return list(set(keys))
【问题讨论】:
-
如果它有效,并且你希望增强/优化你的代码,你应该在code review发帖
标签: python json python-2.7