- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下架构:
const LIST_EVENTS = {
"id": "/listEvents",
"type": "object",
"properties": {
"filter": {
"$ref": "/MarketFilter",
"required": true
},
"locale": {
"type": "string"
}
}
}
从调试中,我可以看到发送到验证的对象是:
{
marketFilter: {
eventTypeIds: [ '1' ],
marketStartTime: {
from: '2018-12-15T00:00:00+00:00',
to: '2018-12-15T23:59:59+00:00'
}
}
}
marketFilter
与架构中的 filter
名称不匹配。据我了解,鉴于这是一个必需的属性,这应该在验证结果的 errors
数组中被标记,但事实并非如此。这是我的验证结果:
ValidatorResult {
instance:
{ marketFilter: { eventTypeIds: [Array], marketStartTime: [Object] } },
schema:
{ id: '/listEvents',
type: 'object',
properties: { filter: [Object], locale: [Object] } },
propertyPath: 'instance',
errors: [],
throwError: undefined,
disableFormat: false }
我认为它可能不介意命名约定,所以我完全删除了该属性,但仍然没有记录错误,这是验证结果:
ValidatorResult {
instance: {},
schema:
{ id: '/listEvents',
type: 'object',
properties: { filter: [Object], locale: [Object] } },
propertyPath: 'instance',
errors: [],
throwError: undefined,
disableFormat: false }
我有很多模式,它们都是通过 .addSchema
方法添加的
最佳答案
您的架构有两个问题。主要问题是您的 required
关键字被忽略,因为它位于 $ref
旁边。当在需要模式的地方遇到带有 $ref
关键字的对象时,它仅被视为 JSON 引用。它不被视为模式。 JSON 引用仅具有 $ref
关键字的语义。其他一切都被忽略。您可以通过在架构中隔离 $ref
来解决您的问题。
"filter": {
"allOf": [{ "$ref": "/MarketFilter" }],
"required": true
}
另一个问题是 required
关键字的 bool 形式的使用。 required
关键字的这种用法多年前已从 JSON Schema 规范中删除。除非您专门针对 draft-03 规范编写 JSON 模式(不太可能,它早就过时了),否则您应该使用 required
的数组形式。一些较旧的实现允许您使用这两种形式,但这不是一个好主意。您应该以单一规范为目标,而不是混合使用来自两个不同版本规范的关键字。
{
"id": "/listEvents",
"type": "object",
"properties": {
"filter": {
"$ref": "/MarketFilter"
},
"locale": {
"type": "string"
}
},
"required": ["filter"]
}
关于javascript - jsonschema 不会在缺少必需属性时抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53793889/
我有两个参数,比如 number_1和 number_2 . number_2的值应该大于 number_1 的值.这如何在 jsonschema 中完成? 最佳答案 这不能用普通的 jsonsche
我有正确验证从返回单个文章的端点返回的文章的代码。我很确定它可以正常工作,因为当我故意不在文章中包含必填字段时,它会给出验证错误。 我还有这段代码,它尝试验证从返回文章数组的端点返回的文章数组。但是,
使用 Python 时 jsonschema可以定义无法用有效 JSON 表达的模式和实例。 >>> import jsonschema >>> schema = { ... "type": "o
我刚学 jsonschema .我不清楚 items 之间的区别是什么和 properties .有人可以解释一下吗? 最佳答案 items用于验证数组,properties用于验证对象。 items
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 10 个月前关闭。 Improve
件JSON Schema很容易与 Angular、React 和 Alpaca 等前端 JavaScript 库一起使用,以创建带验证的 html 表单。这也适用于 Python 解决方案 djang
这是一个使用 propertyNames 的 JSON 模式: { "$schema": "http://json-schema.org/draft-07/schema#", "typ
假设我有一个具有四个可能属性的对象:a、b、c、d。 a 和 b 只能一起出现(即,当且仅当 b 出现时 a 出现)。如果a和b出现,c就不能出现(即a/b和c是互斥的)。如果 a 和 b 没有出现,
我正在使用以下架构来验证我的 json: { "$schema": "http://json-schema.org/schema#", "title": " Rules", "
我希望将 json 模式的公共(public)部分捕获到一个文件中,然后从主模式文件中引用这个文件。所以基本上不是 1 个大的 json 模式文件,而是多个相互引用的文件。我正在使用 json-sch
它是有效的json模式吗? object: $ref: '#/definitions/object' 您会建议使用这种格式吗? 最佳答案 自我引用是允许的并且有用的。但是,您的示例看起来就
我有一个 json 模式,它描述了一个相当复杂的 API 查询语法。一些属性是模式匹配的,但还需要接受除模式之外的其他值(即其他显式字符串)。我似乎无法在众多 json 模式站点中找到任何此类示例。
我有一个 JSON 响应,我正在尝试为其创建 JSONSchema { "gauges": { "foo": { "value": 1234
我正在尝试学习 json 模式,但有些事情对我来说并不奏效。我正在尝试运行来自 http://json-schema.org/understanding-json-schema/reference/c
在下面的架构中,我需要 items_list , price和 variance作为必需的键。条件是 price和 variance可能为空,也可能不为空,但都不能为空。 虽然我能够实现它,但我很期待
对于以下 json 字符串: { "abc" : 123, "def" : 345 } 以下架构认为它有效: { "$schema": "http://json-schema.
在 jsonSchema 中,您可以使用“required”属性指示定义的字段是否是必填的: { "$schema": "http://json-schema.org/draft-04/sch
我想使用 JSON Schema 并允许新类型(目前有字符串数字数组对象 boolean 和 null) 例如我想添加一个联系人类型 在 JSON 中甚至可能吗?有什么建议吗? 谢谢 最佳答案 如果您
给定一个名为 location 的架构的一部分,如下所示: { type: 'object', required: [ 'country' ], additionalProperties:
我想使用 JSON Schema 并允许新类型(目前有字符串数字数组对象 boolean 和 null) 例如我想添加一个联系人类型 在 JSON 中甚至可能吗?有什么建议吗? 谢谢 最佳答案 如果您
我是一名优秀的程序员,十分优秀!