Json Schema - 如何为所有字段定义通用规则

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

所有字段不应包含

#
!
。由于我的Json文件中的条目数量非常庞大,在属性中一个一个定义它很累。

有没有办法在 Json Schema 中定义通用规则?

python json validation schema jsonschema
1个回答
0
投票

您可以定义一个模式,该模式递归地应用于所有数组和对象子级,并且具有指定模式的

propertyNames
模式。像这样的东西:

{
  "$ref": "#/$defs/universalPropertyNames",
  "$defs": {
    "universalPropertyNames": {
      "propertyNames": {
        "pattern": "^[^!#]*$"
      },
      "items": {"$ref": "#/$defs/universalPropertyNames"},
      "additionalProperties": {"$ref": "#/$defs/universalPropertyNames"}
    }
  }
}

如果您使用的是 JSON 架构草案 7 或更早版本,则具有

$ref
意味着不能与它一起使用其他验证关键字,并且 $defs 应该是定义。以下,将 ref 包装在
allOf
中可以与早期草稿中的模式集成。

{
  "allOf": [
    {"$ref": "#/definitions/universalPropertyNames"}
  ],
  "definitions": {
    "universalPropertyNames": {
      "propertyNames": {
        "pattern": "^[^!#]*$"
      },
      "items": {"$ref": "#/definitions/universalPropertyNames"},
      "additionalProperties": {"$ref": "#/definitions/universalPropertyNames"}
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.