我有一个json对象,我想过滤拼写错误的密钥名称。因此,对于下面的示例,我希望有一个没有拼写错误的test_name键的json对象。最简单的方法是什么?
json_data = """{
"my_test": [{
"group_name": "group-A",
"results": [{
"test_name": "test1",
"time": "8.556",
"status": "pass"
}, {
"test_name": "test2",
"time": "45.909",
"status": "pass"
}, {
"test_nameZASSD": "test3",
"time": "9.383",
"status": "fail"
}]
}]
}"""
这是一个在线测试,看起来我不允许使用jsonSchema。
到目前为止,我的代码看起来像这样:
if 'test_suites' in data:
for suites in data["test_suites"]:
if 'results' in suites and 'suite_name' in suites:
for result in suites["results"]:
if 'test_name' not in result or 'time' not in result or 'status' not in result:
result.clear()
else:
....
else:
print("Check 'suite_name' and/or 'results'")
else:
print("Check 'test_suites'")
它有点工作,但是result.clear()会留下一个空的{},后来会变得烦人。我能在这做什么?
答案 0 :(得分:0)
看起来您的数据具有一致的架构。所以我会尝试使用json schema来解决您的问题。有了它,您可以设置一个模式,只允许具有某些键名的对象。
如果您只是想检查字典中是否有某个键,并确保只获得符合规范的键,则可以执行以下操作:
passed = []
for item in result:
if 'test_name' in item.keys():
passed.append(item)
但是如果你有很多不同的钥匙,你需要检查它会变得笨拙。所以对于更大的项目,我会说json架构是要走的路。