Итак, благодаря Relequestual предложениям мне удалось найти решение.
Ограничение: возможные значения «key1» должны быть конечными и известными заранее
Предположим, нам нужна схема JSON для проверки JSON, которая:
- Требуются строковые свойства "required_simple_property1" и "required_simple_property2".
- Требуется свойство "key1" в виде перечисления с 3 возможными значениями ["value1", "value2", "value3"].
- Требуется третье свойство, ключом которого должно быть значение, принятое key1.
Это может быть достигнуто с помощью такой схемы:
"oneOf": [
{
"required": [
"required_simple_property1",
"required_simple_property2",
"value1"
],
"properties": {
"key1": {
"type": "string",
"const": "value1"
}
}
},
{
"required": [
"required_simple_property1",
"required_simple_property2",
"value2"
],
"properties": {
"key1": {
"type": "string",
"const": "value2"
}
}
},
{
"required": [
"required_simple_property1",
"required_simple_property2",
"value3"
],
"properties": {
"key1": {
"type": "string",
"const": "value3"
}
}
}
],
"properties": {
"required_simple_property1": {
"type": "string"
},
"required_simple_property2": {
"type": "string"
},
"value1": {
... (anything)
},
"value2": {
... (anything)
},
"value3": {
... (anything)
},
}