问题标签 [cerberus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
366 浏览

python - cerberus - 如何验证任意字典键?

我在这里这里使用键规则和值规则阅读了问题,但我只看到它们验证嵌套而不是根。我想验证顶级根字典键。

在这个例子中,我只想验证模式是否是str: Dict[str, int]键可以是任意字符串的字典。

我不确定我使用的是正确的文档,这失败了,cerberus.schema.SchemaError: {'any_arbitrary_str': [{'keysrules': ['unknown rule'], 'valuesrules': ['unknown rule']}]}但它仍在寻找any_arbitrary_str而不是任何字符串。

0 投票
1 回答
161 浏览

python - 使用 Cerberus 基于条件验证依赖关系

有两个字段“field1”和“field2”。条件是“field1”或“field2”可以取“ANY”值,但两个字段都不能有“ANY”值。如何根据上述条件添加dependencies或添加oneofexcludes

0 投票
1 回答
146 浏览

python - Python Cerberus 在模式中嵌入数字配置数据

我有一组文档和模式正在针对(令人震惊的)进行验证。

这些文档是来自使用各种不同格式的各种不同客户端的 JSON 消息,因此为从这些客户端接收到的每个文档/消息定义了一个模式。

我想使用dispatcher(将函数调用作为值的字典)在针对匹配模式进行验证后帮助执行文档的映射/格式化。一旦我知道消息的有效模式,我就可以通过调用必要的映射函数为我的各种消费者服务创建所需的消息有效负载。

为此,我的调度程序中需要一个键,它唯一地映射到该模式的相应映射函数。还需要使用密钥来识别模式,以便可以调用正确的映射函数。

我的问题是:有没有办法将像数字 ID 这样的配置值嵌入到架构中?

我想采用这个架构:

并添加schema_id这样的:

因此,在成功验证后,将创建message/document到模式之间的链接,并通过schema_id生成mapping_function的调度程序创建。

像这样的东西:

最后的努力可能是简单地对 json 模式进行字符串化并将其用作键,但我不确定我对此有何感受(感觉很聪明但错误)......

我也可能把这一切都弄错了,有一种更聪明的方法可以做到这一点。

谢谢!

小更新

我通过对模式进行字符串化,转换为字节,然后是十六进制,然后将整数值加在一起来解决它,如下所示:

0 投票
2 回答
618 浏览

python - cerberus中字符串验证的N个元素列表

我如何验证某个类型是一个列表,并且它只包含未知数字的字符串元素?

我目前的解决方案是

但它并不能解决问题,True当您只提供一个字符串而不是列表时也会返回。

0 投票
0 回答
220 浏览

validation - 如何解决使用 Cerberus 验证 3 层 YAML 文件的问题?

我有一个 YAML 配置文件,我想使用 Cerberus 对其进行验证。问题是我的 YAML 文件是一种 3 层字典,当我们有超过 2 个嵌套时,验证功能似乎不起作用。例如,当我运行以下代码时:

我明白了:

我认为不支持验证 3 层文件。所以我唯一的想法是尝试从第 2 层验证它,如果它们都有效,那么就断定我的文件是有效的。我想知道当我有 3 层时我在编写模式时是否犯了一些错误?或者,是否存在验证此类文件的更好主意?

编辑:@flyx 声称问题出在 dict12 的定义中,所以我决定替换它。什么都没有改变。我再次有相同的输出!

0 投票
0 回答
74 浏览

python - 如何使用 cerberus 将字段验证为 URL

我的文档中有一个字段必须是有效的 URL。我可以用 Cerberus 验证这一点吗?我在验证器模式中没有看到相应的类型,并被迫使用“字符串”。

0 投票
1 回答
70 浏览

python - Cerberus 和验证包含字典的列表

我正在尝试验证以下文档。

使用以下架构。

我收到以下错误:{days: ['must be of dict type']}

我无法弄清楚如何验证列表中包含的字典。

0 投票
1 回答
248 浏览

python - 带有单个字典或字典列表的 Cerberus 模式

我正在尝试构建一个模式,其中语句可以是单个字典或字典列表。前任:

{'Document': {'key': 'value'}}

或多个键:

{'Document': [ {'key1': 'value1'}, {'key2': 'value2'}, {'key3': 'value3'}]}

按照我使用此架构测试的文档:

v.schema = {'Document': {'type': ['dict', 'list'], 'schema': {'type': 'dict'}}}

这是输出:

测试代码:

第二种情况,该值是 dict 类型,但我收到此错误,而不是正确解释架构。

0 投票
0 回答
40 浏览

cerberus - Cerberus - 仅在特定同级验证通过时才验证字段

希望社区中的人可以提供帮助。

我们有一个正在尝试解决的验证案例。通过 Cerberus 提供的现有规则或创建新规则。

情况1

如果“initiatedBy”的特定验证通过,我们只想对“searchResultSetId”执行验证。以下是文件,我认为这是代表我们正在尝试做的最简单的方法。

在下面的架构中,您会注意到“searchResultSetId”有一个名为“dependson”的 dict 类型规则。dict 的键是兄弟姐妹'initiateBy',其值与其他验证类似。如果'dependson'中的验证通过,则应执行'searchResultSetId'中的其余验证。如果'dependson'中的验证失败,则应跳过'searchResultSetId'中的剩余验证。

在上面的示例中,将跳过下面的验证,因为“书签”不在允许的值列表中。

到目前为止,使用自定义验证器方法,我们不确定如何跳过属性的剩余验证。有没有办法做到这一点?以下是我们目前所拥有的:

感谢您的时间和帮助。

0 投票
0 回答
32 浏览

python - PyCharm 中某些 Cerberus 库类的未解决参考

我开始遇到导入问题,PyCharm 无法解析对我已安装的某些库的类的引用。对于任何标准库,我都没有遇到过这个问题。

from cerberus import Validator曾经工作,但与其他参考问题一起停止工作。

我努力了:

  1. 文件 > 使缓存无效/重新启动
  2. 使用不同的 Anaconda env
  3. 重新安装库