问题标签 [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 投票
1 回答
173 浏览

node.js - 节点 AJV 验证模式

使用 6.5 版

我的问题是我有一个请求对象,该对象必须包含一个属性,并且应该包含属性列表中的一个且仅包含一个其他属性,或者没有那些指定的属性。我已经进行了一些挖掘,但无法找到解决此问题的方法。

可能的有效请求:

无效的请求是:

或者

等等

我想出的最好的 ajv 验证器对象如下:

但我知道这不会随着我们应用程序的增长而扩展。我想知道是否有办法指定对象需要“查询”和“限制”、“计数”、“最大值”的 ONE 或 NONE。

0 投票
0 回答
861 浏览

json - 用于验证属性名称是否与嵌套值匹配的 JSON 模式

我们使用 JSON 来存储一些配置设置。例如:

如您所见,源名称是可变的,并且为了方便在属性下的对象内部重复name

我们目前正在使用 JSON 模式验证这一点,如下所示:

有没有办法要求属性名称与使用 JSON 模式的值匹配?换句话说,有没有办法确保以下示例无法验证?

0 投票
3 回答
4622 浏览

jsonschema - 使用 json-schema 来要求或禁止基于另一个属性值的属性?

我要在 json-schema 中完成的工作:当属性enabled为时true,应该需要某些其他属性。当 时false,这些属性应该被禁止。

这是我的 json 模式:

使用ajv版本 6.5 进行验证count,无论enabled. 例如,对于数据:

我的验证错误是:

如何使用 json-schema 完成此操作draft-7

请注意,此问题类似于,但要求比:
jsonSchema attribute conditionally required更严格。

0 投票
1 回答
1639 浏览

javascript - 如何选择 node_modules dist 风格与 webpack 捆绑

问题:

在我将 AJV.js 升级到版本 6.4 后,我的供应商捆绑包包含“uri-js”ESNEXT 版本,而不是破坏 IE11 兼容性的 ES5 版本。

分析:

我认为 AJV 通过require('uri-js')调用引用 uri-js,并且uri-js有两种风格:

/node_modules/uri-js/dist/:

  • es5
  • 下一个

出于某种原因,Webpack (V 4.8) 将 uri-js 的“esnext”风格捆绑到我的供应商捆绑包中,而不是使用“es5”。我找不到我必须如何/在哪里指定我的首选构建目标。

这是我的 webpack.config.js:

包.json:

我知道我自己的代码使用 TypeScript (V 2.8) 编译器被转译为 ES5。但是 node_modules 呢?尤其是已经在他们的 dist 文件夹中发布了 ES5 版本的那个?

万一这很重要,我的 tsconfig.json:

我还考虑过包含 Babel 以将所有 node_modules 降级到 ES5,但这对我来说听起来有点矫枉过正,特别是因为模块已经包含 ES5 风格。

问题:

  1. 我可以指定我喜欢 ES5 版本的dist文件夹node_modules吗?也许在我的 webpack.config 或package.json?

  2. 如何选择正确的node_modules/.../dist/文件夹?

0 投票
1 回答
2495 浏览

jsonschema - JSON Schema draft 07 if then statements for conditional validation

I'm trying to create a schema that has a slightly different structure depending upon values and decided to use draft 07 and ajv to validate it. The structure I'm trying to create is as follows -

of this, pattern is required, and certain kwargs objects will have other required keys. I tried using a series of if..then statements combined with a reference as follows :

the required pattern constraint works, the required function constraint does not.

I even tried wrapping up all of the if-then statements into an allOf array, with each set of if-then inside one object, but it doesn't seem to work.

the reference currently looks like this

0 投票
2 回答
1262 浏览

javascript - 将值传递给 Json 模式定义

我在 NodeJS 上使用 AJV Schema 验证器,并希望将userIDfrom添加sessionObject到每个传入的有效负载中,以便我可以userID为每个事务存储。

我想知道这是否可以在 json 模式中完成。

示例传入客户端有效负载 -

所需对象发布架构验证 -

由于传入的有效负载很大,我相信最好在模式验证点进行分配,而不是在我的应用程序内部进行递归操作。我愿意接受建议。谢谢

0 投票
1 回答
461 浏览

javascript - 如何解析 JsonSchema 并将子模式移动到根?

用 JavaScript 编写了一个模式,因为它更容易,我可以简单地运行它来将其转换为JSON

这部分很好,但现在我想提取一个子模式/定义,因为我想使用它的应用程序不会让我为我感兴趣的子模式指定 JSON 路径。

所以我试着写一个小脚本把它拉出来:

但我得到的是:

即,我丢失了其他定义!

AJV 中是否有一些 API 方法可以在不破坏所有 $refs 的情况下提取子模式?

0 投票
1 回答
780 浏览

jsonschema - 使用 ajv 保证数组中特定索引处的值类型

我正在尝试使用 ajv 来保证数组遵守关于什么是有效值的严格规则。我不确定要使用哪些修改或其他关键字来实现我正在寻找的结果。可以使用一些见解。

注意:我有另一种工作方式,没有使用 JSONSchema 验证。我只是好奇是否可以使用 JSONSchema 验证来实现相同的目标。

规则是:

  1. 它可以包含任意数量的项目,我们只关心索引 0 和 1。
  2. 第一项,索引 0,必须是字符串。
  3. 第二项,索引 1,必须是一个对象。
  4. 如果索引 0 或 1 处的项目(无论数组的长度如何)对任一索引都有效,则在相应索引处插入另一个项目的默认值。
  5. 如果数组没有项目,则在适当的索引处插入两个默认值。

这是一个代码片段,希望能解释我想要完成的事情。谢谢。

0 投票
0 回答
250 浏览

node.js - 使用 AJV 在 json 模式中覆盖属性值

我有以下架构

我希望用从 dynamicDefaults 获得的值覆盖传入有效负载中的 Type 值。gettype是一个自定义函数,它返回我的type属性值。

我正在使用 AJV 进行模式验证。谢谢

0 投票
1 回答
1860 浏览

jsonschema - 使用 Json Schema 的 AJV 修改数据

我在 NodeJs 上使用 AJV(另一个 Json 模式验证器)。

我有以下架构

我需要用unqiueID我可以以某种方式传递给 Json 模式或 AJV 的值覆盖属性。我认为上述可以使用 AJV addKeyword 方法完成,尝试使用它但失败了,因为我不知道如何从 AJV 自定义关键字操作(和返回)数据值。是否可以使用 AJV 修改数据?或者还有其他可能的方法吗?谢谢!