python - 将JSON过滤为新的JSON对象

时间:2016-01-17 19:01:57

标签: python json

我有一个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()会留下一个空的{},后来会变得烦人。我能在这做什么?

1 个答案:

答案 0 :(得分:0)

看起来您的数据具有一致的架构。所以我会尝试使用json schema来解决您的问题。有了它,您可以设置一个模式,只允许具有某些键名的对象。

如果您只是想检查字典中是否有某个键,并确保只获得符合规范的键,则可以执行以下操作:

passed = []
for item in result:
    if 'test_name' in item.keys():
        passed.append(item)

但是如果你有很多不同的钥匙,你需要检查它会变得笨拙。所以对于更大的项目,我会说json架构是要走的路。