【发布时间】:2020-05-12 13:24:48
【问题描述】:
我有这个 JSON Schema 文件(缩小到不显示与问题无关的内容):
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "urn:jsonschema:testing:frmwk",
"type": "object",
"title": "The root schema",
"default": {},
"required": [
"processOrder"
],
"additionalProperties": true,
"properties": {
"processOrder": {
"$id": "#processOrder",
"type": "array",
"title": "The processOrder schema",
"default": [],
"additionalItems": true,
"items": {
"anyOf": [
{
"$id": "#0",
"type": "object",
"title": "The first anyOf schema",
"default": {},
"additionalProperties": true,
"properties": {
"cleanHistory": {
"$id": "#cleanHistory",
"type": "object",
"title": "The cleanHistory schema",
"default": {},
"additionalProperties": true,
"properties": {}
}
}
},
{
"$id": "#3",
"type": "object",
"title": "The fourth anyOf schema",
"default": {},
"additionalProperties": true,
"properties": {
"processEvents": {
"$id": "#processEvents",
"type": "object",
"title": "The processEvents schema",
"default": {},
"required": [
"identityTrigger"
],
"additionalProperties": true,
"properties": {
"identityTrigger": {
"$id": "#identityTrigger",
"type": "string",
"title": "The identityTrigger schema",
"default": ""
}
}
}
}
}
],
"$id": "#items"
}
}
}
}
我要验证的 JSON 是:
{
"description": "description",
"requesteeName": "05300005",
"processOrder": [
{"cleanHistory": {} },
{"processEvents": {
"identityTrigger": "some trigger"
}}
],
"deleteObjects": "true"
}
现在,我希望当我删除字符串时它会失败:
"identityTrigger": "some trigger"
因为 "identityTrigger" 属性位于 processEvents 对象的所需数组中。但它并没有失败,数组匹配(processOrder 数组)中一定有问题。 有人可以给我一个建议吗? 谢谢
【问题讨论】:
-
如果您删除“identityTrigger”属性,该 JSON 示例仍会针对第一个
anyOf选项进行验证,因为它没有定义任何必需的属性。 -
@Carsten 好的,但是当在 processOrder 元素中我有没有 eventTrigger 属性的 processEvent 对象时,我应该如何设置架构以使其失败?
标签: json jsonschema json-schema-validator