所有字段不应包含
#
和!
。由于我的Json文件中的条目数量非常庞大,在属性中一个一个定义它很累。
有没有办法在 Json Schema 中定义通用规则?
您可以定义一个模式,该模式递归地应用于所有数组和对象子级,并且具有指定模式的
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"}
}
}
}