Я хочу реализовать две схемы, одна из которых является массивом другой, давайте назовем эту полезную нагрузку B, а другую полезную нагрузку A.
Проблема: родительской схеме требуется дополнительный ключ, который дочерняя схема не может допустить.
Полезная нагрузка A:
{
"a": "a",
"b": "b",
"c": "2019-05-01T09:00:00Z"
}
реализовано со схемой:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "item-schema.json",
"title": "Individual Item POST",
"description": "",
"type": "object",
"properties": {
"a": {
"type": "string"
},
"b": {
"type": "string"
},
"c": {
"type": "string",
"format": "date-time"
}
},
"additionalProperties": false,
"required": [
"a",
"b",
"c"
]
}
Полезная нагрузка B:
[
{
"a": "aa",
"b": "bb",
"c": "2019-05-01T10:00:00Z",
"d": "dd"
},
{
"a": "aaa",
"b": "bbb",
"c": "2019-05-01T11:00:00Z",
"d": "ddd"
}
]
реализовано со схемой:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "items-schema.json",
"title": "Multiple Item POST",
"description": "",
"type": "array",
"items": {
"allOf": [
{
"$ref": "item-schema.json"
},
{
"properties": {
"d": {
"type": "string"
}
}
}
]
},
"additionalItems": false
}
Проблема, с которой я столкнулся, заключается в том, что, хотя полезная нагрузка A проверена правильно и не допускает посторонних ключей, полезная нагрузка B недопустима из-за схемы полезной нагрузки A.