#jsonschema
#jsonschema
Вопрос:
Вопрос:
Есть ли способ сообщить json-schema, что мне нужны дополнительные свойства типа x и хотя бы одно?
краткое объяснение (на основе приведенного ниже блока кода):
Я хочу иметь json-файл с одним обязательным элементом, a. b является необязательным, и мне нужен минимум один дополнительный элемент. Имя дополнительного элемента должно быть гибким. По этой причине я не могу присвоить ему конкретное имя и пометить его как требуется. И поскольку b является необязательным, я не могу использовать «minProperties»
что-то вроде: (не существует)
"additionalProperties": {
"type": "string",
"minAdditionalProperties": 1
}
незавершенная json-схема
{
"$schema": "http://json-schema.org/draft-07/schema",
"type": "object",
"properties": {
"a": {
"type": "number"
},
"b": {
"type": "number"
}
},
"required": ["a"],
"additionalProperties": {
"type": "string"
}
}
ожидаемый результат:
b всегда является необязательным
invalid:
{
"a": 1
}
----
{
"a": 1,
"b": 2
}
valid:
{
"a": 1,
"x": "2"
}
----
{
"a": 1,
"x1": "2",
"x2": "4"
}
Возможно ли что-то подобное?
Ответ №1:
И поскольку b является необязательным, я не могу использовать «minProperties»
Почему бы и нет? Конечно minProperties: 2
, вы получите то, что вам нужно: требуется ‘a’, поэтому требуется одно дополнительное свойство.
Если вам нужно одно дополнительное свойство в дополнение к необязательному свойству ‘b’, вы можете использовать if
/ then
/ else
:
"if": {
"required": [ "b" ]
},
"then": {
"minProperties": 3
}
"else": {
"minProperties": 2
}