【发布时间】:2020-09-19 08:54:42
【问题描述】:
我在尝试验证架构时遇到以下错误 - v7 草案。感谢您帮助解决此错误。
我正在尝试根据标头中的条件枚举值构建架构。属性“工资”类型需要根据标题中选择的条件而有所不同。
错误
尚未定义属性“salary”,并且架构不允许其他属性。
JSON 架构
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"EmployeeHeader": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"empType": {
"type": "string",
"enum": [
"FULLTIME",
"CONTRACT"
]
}
},
"required": [
"empType"
]
},
"EmployeeDetail": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "array",
"items": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"workInfo": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"jobtitle": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"jobtitle"
],
"additionalProperties": false
}
},
"required": [
"workInfo"
],
"additionalProperties": false
},
"minItems": 1
}
},
"if": {
"properties": {
"EmployeeHeader": {
"properties": {
"empType": {
"const": "FULLTIME"
}
}
}
}
},
"then": {
"properties": {
"EmployeeDetail": {
"items": {
"properties": {
"workInfo": {
"properties": {
"salary": {
"type": "object",
"properties": {
"regular": {
"type": "number",
"minimum": 0,
"maximum": 1000000,
"exclusiveMaximum": false,
"multipleOf": 0.01
},
"bonus": {
"type": "number",
"minimum": 0,
"maximum": 1000000,
"exclusiveMaximum": false,
"multipleOf": 0.01
}
}
}
}
}
}
}
}
}
},
"else": {
"properties": {
"EmployeeDetail": {
"items": {
"properties": {
"workInfo": {
"properties": {
"salary": {
"type": "number",
"minimum": 0,
"maximum": 1000000,
"exclusiveMaximum": false,
"multipleOf": 0.01
}
}
}
}
}
}
}
},
"required": [
"EmployeeHeader",
"EmployeeDetail"
],
"additionalProperties": false
}
样本有效负载
{
"EmployeeHeader": {
"empType": "FULLTIME"
},
"EmployeeDetail": [
{
"workInfo": {
"jobtitle": "Software Engineer",
"salary": {
"regular": 4000,
"bonus": 5000
}
}
}
]
}
【问题讨论】:
-
您不必在每个级别都添加 $schema 属性。这些都将被 draft7 实施忽略。
-
好的,感谢您的反馈。
标签: json jsonschema