首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Cerberus JSON模式验证

Python Cerberus JSON模式验证
EN

Stack Overflow用户
提问于 2022-06-28 18:19:29
回答 1查看 132关注 0票数 0

我不知道为什么我的代码不工作,因此寻求一些帮助。

这是我的示例JSON 数组

代码语言:javascript
复制
[
    {
        "bookingid": 1774
    },
    {
        "bookingid": 1020
    }
]

我的代码如下:

代码语言:javascript
复制
def test_get_booking_ids_correct_schema():
    schema = {
        "type": "array",
        "items":
            {
                "properties":
                    {
                        "bookingid":
                            {
                                "type": "integer"
                            }
                    }
            }
    }

    response = requests.get("https://restful-booker.herokuapp.com/booking")
    response_body = response.json()

    v = Validator(schema)
    is_valid = v.validate(response_body)

    assert is_valid == True

我得到的错误如下:

代码语言:javascript
复制
        if not self.schema_validator(test_schema, normalize=False):
>           raise SchemaError(self.schema_validator.errors)
E           cerberus.schema.SchemaError: {'items': [{'properties': ['unknown rule']}], 'type': ['must be of dict type']}

您看到我的架构中有什么明显的错误吗?

相反,下面的代码工作得非常好:

代码语言:javascript
复制
def test_temp():
    schema = {"origin": {"type": "string"}}
    json = {
        "origin": "185.21.87.131"
    }

    v = Validator(schema)
    is_valid = v.validate(json)

    assert is_valid == True
EN

回答 1

Stack Overflow用户

发布于 2022-11-23 14:15:05

不可能验证作为根元素的数组的文档。如您所见:https://github.com/pyeve/cerberus/issues/220

顺便说一句,Cerberus模式中不存在array类型,您应该使用list

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72791379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档