当前位置: 首页 > 知识库问答 >
问题:

使用python用JSON模板验证JSON文件

孟乐逸
2023-03-14

我正在以一种特定的格式创建一个JSON文件,所以我想在进一步处理之前验证它是否是这种格式。

{
  "dev":{
    "username": "",
    "script": "",
    "params": ""
  },
  "qat":{
    "username": "",
    "script": "",
    "params": ""
  },
}

这和预期的一样工作,但是只是想检查一下是否有更好更简单的方法来解决这个问题

代码:

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))

共有1个答案

焦学海
2023-03-14

既然您正在寻找一种更简单/更好的方法,我建议您使用Marshmallow来进行这种验证。这里有一个非常粗略的例子:

from marshmallow import Schema, fields

class EnviornmentSchema(Schema):
    username = fields.Str(required=True)
    scripts = fields.Str(required=True)
    params = fields.Str(required=True)

errors = EnviornmentSchema().validate(file_contents_dict)

基本上,它将您的“模板”系统替换为模式类。您也可以使用嵌套,因为您有多个环境dict。当您需要进行更高级的验证时,Marshmallow会变得非常有用。

 类似资料:
  • 我正在使用Swagger生成Restful API: 这个API接受json字符串并从中生成java对象。这在一个例外情况下运行良好:API接受任何正确格式的json字符串,但忽略json的内容,这意味着我得到一个使用默认值创建的对象。 所以我的问题是:在生成实际的java对象之前,如何验证传入的jsonstring(针对json模式)?

  • 问题内容: 我正在尝试使用Jackson JSON接受一个字符串,并确定它是否为有效JSON。谁能建议要使用的代码示例(Java)? 问题答案: 不知道您的用例是什么,但是应该这样做:

  • 我试图使用另一个JSON模式来验证JSON模式。 要验证的JSON模式示例:https://jsonschema.net/home 验证上述模式的验证模式参考:https://github.com/ajv-validator/ajv/blob/master/lib/refs/json-schema-draft-07.json 从上面的中,如果我删除,我的JSON将变得无效。 我有什么方法可以定义根

  • 问题内容: 是否有任何PHP库可根据JSON模式验证JSON对象? 问题答案: 关于jsonschemaphpv,尽管它维护得不是很好,但是我们经常使用它并且可以正常工作。这是js验证程序的端口。它具有针对php和http://code.google.com/p/jsonschema/的完整测试套件。 猜猜是什么…它比js传递了更多的测试。至少在最后一次运行测试时。问题是该项目的结构不是很好,而且

  • 问题内容: 我正在为返回JSON对象的Java Web应用程序编写一些验收测试。我想验证返回的JSON是否针对架构进行了验证。有人可以为此建议任何工具吗? 问题答案: 该 JSON工具项目 (程序员指南)包括验证使用JSON模式的JSON文件的内容的工具。 另一种选择是使用Rhino验证运行(JavaScript) JSON Schema Validator 。

  • 我对根据JSON模式验证JSON文档不感兴趣。我想验证JSON模式本身,检查它是否针对特定草案有效。是否有工具Java可以验证模式本身?