问题标签 [ajv]
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.
json - 在 JSON 模式中使用对象属性键作为枚举
我正在尝试使用 JSON Schema 验证 JSON 文件,以查找“损坏的引用”的情况。基本上我的文件由项目和组组成,每个项目属于由 groups 属性键引用的单个组,如下所示:
在上面的示例中,该项目cheese
被视为无效,因为dairy
该对象中没有属性groups
。我尝试使用以下架构对此进行验证:
这具有enum
forgroup
由 中的属性值填充的效果groups
,但我想要做的是使用 中定义的属性键groups
。
如果我添加一个像 eg 这样的属性groupIds
,让它成为一个包含所有属性键的数组,groups
并指定枚举,因为"$data": "/groupIds"
它确实有效,所以我认为这是一个 JSON 指针问题。
JSON Schema 中的enum
关键字定义为:
这个关键字的值必须是一个数组。这个数组应该至少有一个元素。数组中的元素应该是唯一的。
因此,如果我只能获取 JSON 指针来引用对象的键而不是其值,我猜枚举验证会起作用。我在想类似或类似的东西"$data": "/groups/.keys"
,"$data": "/groups/$keys"
但在谷歌搜索或阅读规范时没有找到它。有没有这样的事情或曾经提出过?
ajv - 防止 AJV 改变对象
每当我们传递输入进行验证时,AJV 都会输出经过验证的输入。但它会改变原始输入。有没有办法防止这种情况?
javascript - 使用 ajv-keywords 的“未捕获的错误:如果已定义关键字”
我正在尝试使用ajv-keywords中的 if / then / else 关键字创建条件验证,但是我在浏览器控制台中收到以下错误:“未捕获的错误:关键字 if 已定义”。
我究竟做错了什么?
javascript - Ajv 关键字和自定义错误消息
我已经编写了一个模式,但它似乎并没有像我预期的那样进行验证。我假设我的模式语法有问题,但无法弄清楚。我希望在筹款活动完成之前不会看到标题或目标的错误消息,因为只有在筹款活动完成时才需要它们。我尝试了很多组合,但没有一个按预期工作,这两个是我最接近我需要的。
模式尝试一:显示 4 条错误消息、3 条必需错误和 1 条错误,说明数据应与“then”模式匹配。
模式尝试二:显示 2 条错误消息,1 条必需的错误和 1 条错误说数据应该匹配正确的“then”模式,但是当我完成筹款活动时,有效变为真,这是我希望看到标题和目标所需的错误的时候。我定义的自定义错误消息也没有错误。
我很确定我的架构有问题,但是从文档中不清楚如何使用 if/then 与使用 ajv-errors 的自定义错误消息结合使用。任何帮助将不胜感激!谢谢!
javascript - fastify 和 ajv 模式验证
我正在尝试验证查询字符串参数“hccid”,如下所示。似乎验证对我不起作用。有人可以看到我缺少什么吗?
因此,使用该代码,当我使用全新的查询参数调用服务时,我应该得到一个模式验证异常,abc
如下所示
但没有错误。我得到了回复{"hello":"world"}
我还尝试一起删除查询参数http://localhost:3000/hello
我仍然得到{"hello":"world"}
所以显然验证不起作用。我的代码中缺少什么?任何帮助,将不胜感激。
json - JSON-Schema:在 $ref 中使用相对 URL
我在使用通过相对 URL 引用子架构的父架构时遇到问题。
这是我的父架构:
这是我的子架构:
这是我的数据:
这是我得到的错误ajv-cli
:
$ ajv -s parent.json -d parent-test.json
架构 parent.json 无效
错误:无法从 id 解析引用 child.json#
我在其他 3 个验证器中遇到了类似的错误(child.json
无法解决),这表明我的架构不正确。
我究竟做错了什么?
javascript - 使用带有 jsonschema 的负面回溯
我正在使用节点 9.2.0 和 ajv 6.0.0。
我有一个模式,我希望在其上使用否定的lookbehind,它的定义如下:
但是,似乎当我尝试使用以下数据通过 AJV 验证这一点时:{"id": 123, "title": "world exclusive"}
我没有收到验证错误。
编码:
数据在哪里:{"id": 123, "title": "world exclusive"}
. 我希望这会出错,但它目前告诉我数据是有效的。