如何在 json 模式中包含对键和值的验证

How to include validations for key as well as value in a json schema

我需要为 属性 以及 json 架构中的值添加验证。

我尝试使用以下架构,但 none 的验证有效:

{
    "$schema": "http://json-schema.org/draft-06/schema#",
    "type": "object",
    "additionalProperties": false,
    "minProperties": 1,
    "properties": {
        "add": {
            "type": "object",
            "patternProperties": {
                "^VOF979[0-9]{11}-NDG[0-9]{2}$": {
                    "description": "Some description",
                    "type": "string",
                    "maxLength": 2
                }
            }
        }
    }
}

我使用了以下 json 数据并且所有验证都通过了,尽管键和值都是错误的:

{
    "add": {"VOF98999990005235-NDG01": "121"}
}

不允许附加属性保持严格验证

{
  "$schema": "http://json-schema.org/draft-06/schema#",
  "type": "object",
  "properties": {
    "add": {
      "type": "object",
      "patternProperties": {
                "^VOF979[0-9]{11}-NDG[0-9]{2}$": {
                    "description": "Some description",
                    "type": "string",
                    "maxLength": 2
                }
            },
      "additionalProperties": false // This One
    }
  },
  "additionalProperties": false,
  "minProperties": 1
}

Reference to Docs看看这个

JSON 架构是基于约束的。

patternProperties 根据键匹配(在本例中为正则表达式匹配)将其值架构应用于实例位置。

它不禁止对象中的附加键。

如果你想阻止额外的键,你需要这样指定。

为此,您需要 "additionalProperties": false