如何覆盖由“ allOf”关键字继承的json模式中定义的验证规则?
示例:
{
"$schema": "http://json-schema.org/draft-06/schema",
"title": "My JSON Schema",
"description": "",
"definitions": {
"a": {
"type": "object",
"properties": {
"b": {
"type": "object",
"properties": {
"c": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"c"
]
}
},
"required": [
"b"
]
}
},
"properties": {
"main": {
"type": "object",
"allOf": [
{
"$ref": "#/definitions/a"
}
]
},
"sub": {
"type": "object",
"allOf": [
{
"$ref": "#/definitions/a"
}
]
}
}
}
{
"$schema": "http://json-schema.org/draft-06/schema",
"title": "My JSON Schema",
"description": "",
"definitions": {
"a": {
"type": "object",
"properties": {
"b": {
"type": "object",
"properties": {
"c": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"c"
]
}
},
"required": [
"b"
]
}
},
"properties": {
"main": {
"type": "object",
"allOf": [
{
"$ref": "#/definitions/a"
}
]
},
"sub": {
"type": "object",
"allOf": [
{
"$ref": "#/definitions/a"
}
]
}
}
}
json模式定义了两个对象:
两个对象都从定义的对象“ a”继承其属性 但是对象“ sub”应具有针对属性b.c的其他验证规则(当前为minLength 1和maxLength 100)。
所以下面的json当然是无效的:
{
"main" :{
"b": {
"c": "This property has a min length"
}
},"sub" : {
"b": {
"c": ""
}
}
}
如何覆盖属性b.c的验证规则?
答案 0 :(得分:1)
JSON Schema规范目前无法执行此操作。