我想知道如何为不同对象的数组指定JSON模式。 This thread给了我一半答案,但是当我有每种类型对象的多个实例时失败。
以下是一个示例XML,基于example given here,但重复了“ Product ”对象: -
{
"things": [
{
"entityType" : "Product",
"name" : "Pepsi Cola",
"brand" : "pepsi"
},
{
"entityType" : "Product",
"name" : "Coca Cola",
"brand" : "coke"
},
{
"entityType" : "Brand",
"name" : "Pepsi Cola"
}
]
}
以下架构仅在每种类型的单个实例(即“产品”仅出现一次)时验证上述XML。
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "https://schemas.example.com/things",
"title": "Things",
"description": "Some things",
"type": "object",
"required": [
"things"
],
"properties": {
"things": {
"type": "array",
"items": [
{
"type": "object",
"required": [
"entityType",
"name"
],
"properties": {
"entityType": {
"type": "string",
"enum": [
"Product"
]
},
"name": {
"type": "string"
},
"brand": {
"type": "string"
}
}
},
{
"type": "object",
"required": [
"entityType",
"name"
],
"properties": {
"entityType": {
"type": "string",
"enum": [
"Brand"
]
},
"name": {
"type": "string"
}
}
}
]
}
},
"additionalProperties": false
}
要添加娱乐内容,我无法使用“ AnyOf ”等关键字,因为我将此架构嵌入到Swagger 2.0文档中,并且不支持这些关键字。
谢谢,
学家
答案 0 :(得分:1)
没有anyOf
你运气不好。您可以做的最好的事情是使用一个涵盖所有选项的架构。这不是一个很好的解决方案,但它总比没有好。