首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用cerberus验证字典列表

使用cerberus验证字典列表
EN

Stack Overflow用户
提问于 2021-08-23 07:22:54
回答 1查看 126关注 0票数 0

开始使用cerberus进行合同测试。

当我们得到基于字典的JSON结构时,它可以很好地工作,例如:

{'results': [{"key": "value"}, {"key": "value"}, {"key":"value}]}

但当响应只是一个字典列表时,一切都会变得糟糕,例如:

[{"key": "value"}, {"key": "value"}, {"key":"value}]

我面临的基本错误是:

代码语言:javascript
复制
cerberus.validator.DocumentError: '[{'id': 'XXX', 'is_supported': True}]' is not a document, must be a dict

在架构中指定顶级类型:"list“没有帮助,返回架构错误:

代码语言:javascript
复制
cerberus.schema.SchemaError: {'type': ['must be of dict type']}

简单的解决方案就是传递列表并验证其中的所有实体。但看起来应该有更合适的方法来做到这一点。

据我所知(正如google所说的),顶级数组是一个有效的JSON结构,所以应该有一种方法来正确地验证它,不是吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-05 16:24:37

我更喜欢把这作为评论来发表,但我没有这个名气。尽管如此,这里还是有人问了同样的问题:https://github.com/pyeve/cerberus/issues/220

一种解决方案是编写Validator subclass,另一种是使用cerberus-list-schema,它显然是基于Cerberus的,但也支持列表和数组模式。

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

https://stackoverflow.com/questions/68888712

复制
相关文章

相似问题

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