问题标签 [json-schema-validator]

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 投票
2 回答
285 浏览

json-schema-validator - 所需属性上的 json 架构问题

我需要根据http://json-schema.org/定义的规范编写 JSON Schema 。但我正在为必需/强制性的属性验证而苦苦挣扎。下面是我编写的 JSON 模式,其中所有 3 个属性都是强制的,但在我的情况下,任何一个都应该是强制的。这个怎么做?。

0 投票
1 回答
258 浏览

json - 相似结构的通用 JSON Schema

我对 json 和 json 模式完全陌生,所以我有一个问题(但我不知道它有多大意义)。我们可以创建一个对于类似类型的结构很常见的 json 模式。例如:

一个单一的模式可用于验证以下 json

JSON:

相似之处:

  1. 两者都在数组中只有一个对象
  2. 对象具有字符串值。

不同点:

  1. 属性数量不同
  2. 两者的键不同

我们可以这样做吗?

0 投票
1 回答
212 浏览

json - 使用 z-schema 编译 JSON Schema Draft-03

我有一些 js 对象的草稿 -03 json 模式。

我正在使用 z-schema https://github.com/zaggino/z-schema来验证 js 对象的模式。

我在它的 api 的帮助下设置远程引用,setRemoteReference并从这里 http://json-schema.org/draft-03/schema#提供 Draft-03 模式对象

但是我调用 validate 方法会引发错误

好像编译失败了。但是,从真实来源http://json-schema.org/draft-03/schema#下载的模式对象怎么会出错。?

还是说,z-schema 无法有效地编译 draft-03。?

所以我的问题是,我如何使用 z-schema 验证 draft-03?

0 投票
1 回答
475 浏览

json - 根据输入 json 数据中其他属性的值检查属性的值

我正在接受有关数据库表架构的信息。它包含有关表列的信息。因此,很明显,这些列具有nametype 属性string。但是,这些名称不必来自预先选择的名称列表。它们可以是用户输入的任何内容。现在我还想接受表的唯一键,它可以是复合键,并且只包含用户输入的那些列。换句话说,唯一键可以由用户在 json 数据中提供的列组成。

因此,从技术上讲,我需要的是:动态填充的字符串枚举(来自输入的 json 数据),这将是表示唯一键的数组项的一种类型。因此,数组的每个元素都是一个列名。

例如下面的 json 数据

是有效的,但是

无效,因为在列表中不存在val4指定。这可以通过当前的 json-schema 规范和实现来实现吗?在这方面我没有找到任何方向。uniqueKeycolumns

我当前的 json 架构如下所示:

0 投票
1 回答
570 浏览

json - 有没有办法将我的 JSON 模式的某些部分定义为必须根据核心 JSON 模式进行简单验证的元素?

我有一些生成的 JSON 模式,我正在尝试使用 JSON 模式为这些模式制定一个模式。这样做的原因是我需要其他人为我提供与我生成的内容相匹配的 JSON 模式。他们可以以任何他们喜欢的方式创建它们,但我最终必须能够使用它们。

在我生成的模式中,我有对象,其中对象的每个属性通过一些小的更改有效地扩展了核心 JSON 模式。有没有办法将对象属性的模式标记为扩展核心 JSON 模式?我读到如果 Draft 3 在 Draft 4 中被删除,则有一个“extends”关键字。

例如,像下面这样的对象属性可以有 minItems、type、name 等条目......但也可以有一些自定义条目,如 readonly 或 target_model_type。

0 投票
1 回答
10795 浏览

json - JSON Enum Schema 问题 - 用有效的模式纠正我

我有以下 JSON 有效负载,我正在尝试为其中一个元素添加 ENUM 类型值。

这是我的架构,我在使用此网站自动生成后尝试对其进行修改。http://jsonschema.net/#/

我在这里按照我的期望手动添加了 ENUM 类型。请更正此 SCHEMA 的问题。

0 投票
1 回答
629 浏览

json - 验证 Json Schema Draft V4

我有一个如下的 Json 模式,当我在http://jsonschemalint.com/draft4/#这样的在线验证器上验证它时,它说它是有效的。我将“类型”更改为“对象”、“数组”、“字符串”并保持结构的其余部分相同。仍然说有效的模式。我的理解是当 type=object 应该有“properties”,而 type=array 应该有“items”

0 投票
2 回答
342 浏览

jsonschema - 在 JSON 模式中的不同对象之间进行选择

我正在为收据创建一个模式,并希望为核心概念提供一个主模式,其中包含用于专业收据类型的各种不同的详细对象(例如,逐项列出的酒店收据等)。我当前的实现是利用oneOfJSON 模式中的机制

这种方法的问题是,当我验证(使用 tv4)时,似乎oneOf正在检查中指定的所有模式,实际上正在返回错误。我可以通过摆脱detail属性,移动oneOf到模式级别(例如,在 之外properties),然后在每个子模式中创建根属性名称来最小化这种影响。但是,即使在这种情况下,如果在验证酒店收据类型时出现错误,我也会收到“缺少所需属性:generalDetail”。

所以2个问题:

  • 甚至可以detail像我目前正在使用的那样使用通用属性并且没有验证器完全验证oneOf结构中的每个子模式(例如我是否使用oneOf错误)?
  • 如果不可能,我只需拥有一组“类型化”详细信息属性(如“generalDetail”、“hotelDetail”等)就可以了——但有没有办法指定它们是一个组并且只有其中一个应该存在于正在验证的文档中?

TIA

0 投票
1 回答
5921 浏览

json - 使用 JSON 模式验证 JSON 输入

如果您在输入文件中指定配置为架构中要求的元素,则验证 OK。如果您附加“maxItems”:1,它不会关心您是否在输入文件中添加另一个元素,验证器仍将其视为有效输入文件。

即:架构:

输入文件:

这不应该是无效的输入文件吗?

验证者:

0 投票
1 回答
120 浏览

json - oneOf 运算符中的属性未按我的意愿进行验证

我在验证/理解“oneOf”运算符时遇到问题。

JSON模式:

我希望 JSON 输入中需要“SimpleQuery”或“CompositeQuery”,但它在没有指定它们的情况下验证 OK。

JSON输入: