JSON 架构:必需的布尔字段无法正常工作

问题描述 投票:0回答:1

如果两个必填布尔字段中的任何一个不存在,我的请求就会成功。但是,我需要一种行为,如果必填字段之一为空、缺失或不正确,则会给出自定义错误。

如果我将参数“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 会这样工作?我是否犯了任何错误?如何改进才能使模式按照我希望的方式运行?

java json boolean jsonschema
1个回答
0
投票

您是否将请求 JSON 对象映射到类对象中?

如果是这样,请检查布尔类成员是否声明为

boolean
而不是
Boolean

我们在这里遇到了同样的问题。将类成员更改为

Boolean
后,验证开始按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.