#json #jsonschema
#json #jsonschema
Вопрос:
В зависимости от свойства type
я хотел бы включить подсхему, поэтому я написал:
"allOf": [
{
"if": {
"properties": { "type": { "const": "foobar" }}
},
"then": {
"$ref": "foobar.schema.json"
}
}, ...
]
К сожалению, это не работает. Однако, если я сделаю следующее, я успешно получу foobar
определения:
"allOf": [
{
"$ref": "foobar.schema.json"
}, ...
]
Кажется, json-schema не поддерживает условное включение подсхемы, или я не знаю, как его использовать.
Какие-нибудь подсказки?
Моя полезная нагрузка:
{
"type": "foobar",
"foobarProperty": 42
}
Здесь та же проблема с монолитной схемой:
{
"$schema": "http://json-schema.org/draft-07/schema",
"type": "object",
"additionalProperties": false,
"definitions": {
"foo": {
"lines": {
"$id": "#/lines",
"type": "integer",
"default": 1,
},
}
},
"allOf": [
{
"if": {
"properties": { "type": { "const": "foo" }}
},
"then": {
"allOf" : [
{"$ref": "#/definitions/foo"}
]
}
},
],
"properties": {
"type": {
"$id": "#/properties/type",
"type": "string",
"enum": ["foo", "bar"],
"default": "foo"
},
}
}