我发现很难理解如何使用不同的验证集来验证不同类型的响应。我只是提供一个示例代码,然后尝试解释它可能有意义。
示例数据集:
responses: [
{ type: 'user', age: 5 }
{ type: 'admi', auth: {...} }
]
json架构示例:
{
"definitions": {
"user": {
"type": "object",
"properties": {
"type": { "type": "string" },
"age": { "type": "number" }
}
"required": ["age"]
},
"admin": {
"type": "object",
"properties": {
"type": { "type": "string" },
"auth": { "type": "object" }
}
"required": ["auth"]
}
},
"responses": {
"type": "array",
"anyOf": [
{ "$ref": "#/definitions/user" }
{ "$ref": "#/definitions/admi" }
]
}
}
如何根据类型(不是string, number
,而是'user', 'admi'
)验证这些内容?
答案 0 :(得分:1)
您正在寻找适用于字符串或实例中任何类型的验证关键字。在最新版本的JSON Schema中,您可以找到const
。
您可以为用户定义添加以下const关键字...
...
"user": {
"type": "object",
"properties": {
"type": { "type": "string", "const": "user" },
"age": { "type": "number" }
}
"required": ["age"]
},
...
如果您无法使用const
,因为您需要使用旧版本的JSON Schema,那么您可以使用enum
,这实际上就是sam,但是您需要将字符串包含在内#&# 34;用户"在数组内部作为enum
关键字的值。