从JSON模式生成验证代码

问题描述 投票:0回答:1

是否有一个现有的python包可以帮助我从json模式生成代码?

例如,如果我有一个像JSON这样的对象

{       
    "attribute": "obj.value",      
    "operator":  "greater than",      
    "value" : 235 
}

我希望能够获取此JSON并将其作为规则应用于不同的对象,以查看哪些通过规则。

理想情况下,我希望有类似的东西

is_valid(obj,schema)

哪里

is_valid({"value":300},{"attribute":"value","operator":"greater than","value":235}) 

返回True

python python-3.x jsonschema
1个回答
3
投票

qazxsw poi就是这样做的,根据有效的JSON模式验证Python数据结构:

jsonschema project

这在架构有效时返回from jsonschema import validate validate(obj, schema) ,而在架构有效时返回异常。如果必须有布尔值,请使用:

None

您确实需要使用有效的JSON模式约束。例如,对于整数值,如果您的值需要遵守边界,则为import jsonschema def is_valid(obj, schema): try: jsonschema.validate(obj, schema) except jsonschema.ValidationError: return False else: return True

字典limit the range是一个带有单个键的JSON对象,其中该单个键是一个边界较低的整数,因此将其定义为JSON模式:

{"value": 300}

此架构验证您的示例值:

schema = {
    "type": "object",
    "properties": {
        "value": {
            "type": "integer",
            "minimum": 235,
            "exclusiveMinimum": True
        }
    }
}

阅读>>> import jsonschema >>> def is_valid(obj, schema): ... try: ... jsonschema.validate(obj, schema) ... except jsonschema.ValidationError: ... return False ... else: ... return True ... >>> schema = { ... "type": "object", ... "properties": { ... "value": { ... "type": "integer", ... "minimum": 235, ... "exclusiveMinimum": True ... } ... } ... } >>> is_valid({'value': 300}, schema) True >>> is_valid({'value': 1}, schema) False ,获取有关如何编写此类模式的精彩教程。

© www.soinside.com 2019 - 2024. All rights reserved.