问题标签 [voluptuous]

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 投票
1 回答
5966 浏览

python - Python - Cerberus、jsonschema、voluptous - 哪一个合适?

我正在用 python 开发一个小型 RESTful Web 应用程序并使用 JSON 作为接口。应用程序接受 JSON 数据并需要根据模式验证它们。根据请求,模式可能非常严格或灵活。此外,应用程序可能需要在以后的改进中验证用户对象。

我在堆栈溢出以及其他网站上发现了一些建议。这些包括

但找不到合适的比较。

在简单性、灵活性和可扩展性方面,您认为我应该选择哪一个?

从他们的文档和示例来看,Cerberus 似乎非常灵活,扩展能力似乎非常好。但我不知道其他图书馆。

编辑 1:现在应用程序的需求非常简单,基本模式验证具有添加自定义类型和自定义验证规则的范围就足够了。因此,如果所有这些库都提供基本要求,我会选择最简单易用的库。如果有其他建议,我也愿意接受。

希望能得到一些帮助。

0 投票
1 回答
1265 浏览

python - 为密钥类型验证获取更好的 Voluptuous Schema 错误消息?

我有一个看起来像这样的模式(一个例子):

如果我通过一个 int (比如说42)作为键(Any(str, unicode)),我得到:

<class 'voluptuous.error.Invalid'> : extra keys not allowed @ data[42]. Got ["my_value"]

这并不能很好地代表我的错误,因为它甚至没有告诉我们问题实际上是密钥的类型。值类型的错误是完美的,如下所示:expected str for dictionary value @ data[0]["my_key"]. Got 42

有没有办法使用 a 获得更清晰的密钥类型验证消息voluptuous' Schema,就像这样?

expected str for dictionary key type. Got 42

PS:或者可能是我Schema的不正确?我的目标是有一个字典,其中键是字符串或 unicode(这是一个示例),值是具有特定值类型的特定键的字典列表。

更新

我尝试将密钥验证放在另一个 Schema 中,以获得正确的错误消息,如下所示:

我从那里得到的错误消息KEY_SCHEMA是“好的”,我可以做一个try/except raise输出更好的错误消息,但它被 main 捕获,Schema并且再次返回与以前相同的错误。

0 投票
1 回答
790 浏览

python - Voluptuous:在 dicts 中验证 dicts

我想验证以下 YAML 文件定义了一个defaultdict包含两个dict名为dev和的 s sha

using yaml.load()(safe_load()导致创建构造函数的完全不同的问题,所以让我们把它放在一边。) 给我这个数据结构:

我想验证这个数据结构,所以我创建了这个:

这成功地验证了我有一个defaultdict包含两个dicts. 我想验证这两个字典中的shaandurl标记是真的str(稍后可能会进行更多验证。)

我可以创建一个额外的架构

但是有没有更优雅的方式来做到这一点?

0 投票
0 回答
241 浏览

python - 在另一个 Schema 中构建 Python Voluptuous Schema

我正在尝试验证另一个模式中的模式。我收到以下架构的错误是"expected a dictionary"针对campaign参数的。

我尝试这样做的原因是,如果我更改广告系列中的一个字段,我也不必在另一个模式中更改它。我也试过把create_campaign_schema字典本身——没有——直接Schema()放进去create_ad_schema

我的初始模式看起来像这样并被使用Required('campaign'): All(),但它不允许将值设置为Falseor None,这基本上就是我想要做的所有事情:

这是我解决此问题的最新尝试:

此模式将处理的预期数据是:

0 投票
1 回答
98 浏览

python - 在 voluptuous 中忘记 Schema() 后没有错误

根据示例,这是创建验证模式的正确方法:

但是,我注意到,我Schema的一些验证器中缺少该调用,例如:

我检查了一下,PORT1不是PORT2同一类型。问题是PORT2对我来说效果很好,并且给出了与正确的结果相同的结果PORT1

我不知道我是不是弄错了。有人可以明确说明省略Schema(...)? 为什么它在没有Schema(...)我没有注意到任何问题的情况下运行良好?

0 投票
1 回答
35 浏览

python - 如何使用单个命令使所有 Voluptuous 字段都需要?

我尝试检查我的 JSON 字段及其类型。所以,我使用妖娆和它的方法。

一个例子是here。

我能否以更短、更方便的方式填写所有必填字段?我不想在每行的开头使用这个“必需”标记=)

0 投票
1 回答
204 浏览

python - 字典验证中至少有一个键?

假设我想要一本字典,其中至少包含三个键foo', 'bar', baz` 中的一个。以下将允许一个空集。

不幸的是,我不能这样做:

最好的方法是什么?

0 投票
1 回答
43 浏览

python - 在 C# 中是否有任何数据验证 nuget 库,如 python 的 voluptuous?

对于数据验证,Python 编码人员经常会使用这个名为Voluptuous的库。是一个很棒的库,用于在代码中进一步处理数据之前验证数据。

我们可以在 C# 中使用任何等效的 NuGet 库吗?

下面是一个关于如何在 python 中使用 voluptuous 的 python 片段

0 投票
2 回答
24 浏览

python - Voluptuous:在 yaml 文件中给出错误行

我使用voluptuous了很多来验证 yaml 描述文件。通常这些错误很难破译,尤其是对于普通用户而言。

我正在寻找一种使错误更具可读性的方法。一种方法是识别 YAML 文件中的哪一行是有罪的。

在上面的示例中,我收到此错误:

我宁愿喜欢这样的错误:

有没有一种优雅的方式来实现这一目标?