如果两个必填布尔字段中的任何一个不存在,我的请求就会成功。但是,我需要一种行为,如果必填字段之一为空、缺失或不正确,则会给出自定义错误。
如果我将参数“own”和“close”的类型更改为字符串或枚举,我的架构会响应错误,这正是我想要的,但我的请求中的参数类型应保留布尔值不是字符串或枚举。
我的 JSON 架构:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "someSchema",
"type": "object",
"description": "template",
"properties": {
"own": {
"type": "boolean",
"default": false
},
"space": {
"type": "string"
},
"card": {
"type": "string"
},
"closed": {
"type": "boolean"
},
"id": {
"type": "string"
}
},
"required": [
"id",
"closed",
"own",
"type"
]
}
由于某种原因,此请求成功,但必须被拒绝,因为缺少必需的“own”字段:
{
"space": "test",
"card": "test",
"closed": false,
"id": "11_223_334"
}
当必填的“close”字段缺失时,也是一样的:
{
"space": "test",
"card": "test",
"own": true,
"id": "11_223_334"
}
当我用字符串而不是布尔值替换“own”或“close”类型时:
{
"space": "test",
"card": "test",
"own": "blablabla",
"id": "11_223_334"
}
因此,如果缺少任何字符串类型的必需参数,那么它的工作方式正是我想要的,这会给我一个错误,但由于某种原因,它不适用于布尔类型和我的请求通过。
为什么 JSON Schema 会这样工作?我是否犯了任何错误?如何改进才能使模式按照我希望的方式运行?
您是否将请求 JSON 对象映射到类对象中?
如果是这样,请检查布尔类成员是否声明为
boolean
而不是 Boolean
。
我们在这里遇到了同样的问题。将类成员更改为
Boolean
后,验证开始按预期工作。