问题标签 [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.

0 投票
0 回答
256 浏览

ajv - 如果架构具有必需集且数据为空字符串,则 Ajv 返回有效架构

嗨,我刚开始学习 AJV,我对它如何处理必填字段有点困惑。我正在处理一个已经构建的项目,可能当前用例不需要某些配置,或者做错了。

我正在使用 AJV 版本 5.5.1。

这是我的代码:

现在这会将 isValid 变量设置为 true 并且 validator.errors 没有错误,这让我有点困惑。因为我希望发生的事情是错误的,因为在架构级别我在所需的属性中设置了“名称”键。

我还尝试设置 data.name = null 我得到 isValid false 错误,这对我来说很有意义,因为我在架构级别将类型设置为字符串,但这不是需要验证的错误。我希望能够区分所需错误和类型错误。

如果属性没有值,如何使验证器返回 false?

0 投票
1 回答
5234 浏览

typescript - 在 TypeScript 中使用带有 ES6 Promises 的 Thenable 接口

一些库提供Thenable接口类型 fe AJV
我对他们有些不理解。鉴于这个最小的代码

TypeScript 编译器抛出一个我无法理解的错误。

编译器究竟认为TypeScripts ES6 Promise会在哪里返回null(如果那是实际错误)?
为什么有些库(bluebird、rsvp、ember、...)使用Thenable而不是Promise/ PromiseLike

0 投票
3 回答
4375 浏览

node.js - AJV 架构验证失败

我正在使用 Jsonix,我使用下面提到的命令来生成 jsonix 映射和 jsonix 模式,

它正在正确生成映射和架构,我想使用AJV和生成的 JSON 架构来验证 JSON,所以我尝试了这个,

但它抛出错误

实际上错误是在ajv addschema时出现的,我做错了什么吗?

0 投票
2 回答
7349 浏览

javascript - 类型的 Ajv 自定义错误消息

我正在使用 ajv-errors 探索 Ajv,以验证 json 模式并生成自定义错误消息。到目前为止一切正常,但我无法为单个值的类型设置自定义错误消息。

输出以下错误

第一个带有消息“应该是整数”的错误对象,我可以像 foo 一样自定义它必须是整数吗?我期待像下面这样的东西,但它给出了架构错误。

谢谢。

0 投票
2 回答
1943 浏览

node.js - 如何声明嵌套属性的依赖关系?

我正在使用 JSON Schema 的 Draft-04。是否可以根据子属性的存在设置依赖关系,和/或依赖于子属性?还是我被迫使用allOf来管理这些依赖项?

我有以下内容(您可以在https://repl.it/@neverendingqs/JsonSchemaNestedDependencies使用它):

我正在寻找 Draft-04 的答案,但也对使用后来的规范的答案感兴趣。

编辑:Draft-04指的是http://json-schema.org/specification-links.html#draft-4下的规范。具体来说,我使用dependencies的是在验证规范(https://datatracker.ietf.org/doc/html/draft-fge-json-schema-validation-00)下定义的

0 投票
1 回答
1949 浏览

json - Ajv:如何利用自定义关键字的 $data 引用?

我在我的项目中使用Ajv。我正在尝试在ajv.addKeywordapi 的帮助下添加自定义关键字。我可以通过这样做来添加关键字(从文档中借来的):

一切正常。现在我需要$data为我的自定义字段使用原因数据将是其他字段的值。为了实现它,这是我尝试使用我的模式:

但看起来$dataref 尚不支持自定义字段。如文档中所述,$data ref 仅支持以下字段。

关键字中支持 $data 引用:const、enum、format、maximum/minimum、exclusiveMaximum/exclusiveMinimum、maxLength/minLength、maxItems/minItems、maxProperties/minProperties、formatMaximum/formatMinimum、formatExclusiveMaximum/formatExclusiveMinimum、multipleOf、pattern、required、uniqueItems .

获取值的一种方法是,我使用验证函数的参数并编写逻辑来提取refdata, dataPath, parentData, parentDataProperty定义的字段的值。$data但我不确定这是否是实现它的正确方法。谁能帮我解决这个问题?这是玩的plunkr。谢谢。

0 投票
1 回答
1709 浏览

json - $ref 不适用于数组类型 json 模式

我有三个 json 模式定义。客户、地址和联系方式。

客户端.json

地址.json

联系人.json

待验证对象

'client.json' 中的 $ref's 工作正常,但从 'contact.json' 引用 'address.json' 时出现错误。在“additionalItems”中使用 $refs 时我没有收到任何错误,但无法针对 $ref 指向的架构进行验证。

我想知道如何使用数组类型模式定义中的 $ref 。另外,我正在使用 AJV 进行模式验证。

编辑 1: AJV 设置

0 投票
1 回答
915 浏览

javascript - JS Json 架构 - AJV

我正在使用 AJV(JS JSON Schema Validator),并且正在尝试找到一种方法来扩展它支持的类型。

我收到此错误是因为在架构中我有一个自定义类型(我在 python 中验证的 DocumentReference - jsonschema 也是如此)

这是架构的一个小示例:

在 python jsonschema 中有一种方法可以扩展类型并定义您想要如何验证它们,AJV 中是否有一些等价物?

JSFiddle

0 投票
2 回答
2742 浏览

javascript - 如何在 JSON Schema 中组合或扩展属性?

如果我有一组项目并且这些项目共享一些属性并且也有不同的属性。

  1. 有没有办法用不同的属性扩展/修补公共属性?
  2. 我可以使用$switch内部对象属性吗?我知道它在根级别外部使用,但是有没有办法在属性内部执行条件?

我试图为此类问题找到任何解决方案,但到目前为止似乎无法解决任何问题。

0 投票
0 回答
988 浏览

javascript - 仅当两个字段之一不为空时,如何验证 AJV 中的字段

我试图验证一个字段不是空的,只有当两个字段之一不为空时,ajv使用

例如

我正在尝试使用此架构,但我不知道如何指定 OR 条件。

如何向此架构添加 OR?