Я хочу определить JsonSchema с customProperty в нем, это свойство следует некоторым правилам, поэтому для его проверки мне нужно определить JsonSchema, который будет проверять его.
Покаудалось описать это правильно, но он работает только для первого уровня атрибутов, и я хочу, чтобы он был рекурсивным ...
Из моего понимания это должно сработать, я, вероятно, допустил ошибку, которую не могувидите, и на данный момент я не знаю, является ли это ошибкой, невозможной или глупой ...
Я считаю, что переопределение каждого типа должно быть возможным, но, очевидно, я бы не стал.
Вот пример Json, который я хочу проверить
{
"title": "TheObject",
"type": "object",
"properties": {
"aString": {
"type": "string",
"myCustomProperty": {}
},
"anObjet": {
"type": "object",
"myCustomProperty": {},
"properties": {
"anotherObject": {
"type": "object",
"myCustomProperty": {}, //if this line is removed it still validates wich I don't want
"properties": {}
}
}
}
}
}
, а вот JsonSchema, который я сделал до сих пор:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"title": {"type": "string"},
"type": {"type": "string","enum": ["object"]},
"properties": {
"type": "object",
"patternProperties": {
".*": {
"$ref": "#/definitions/Field"
}
}
}
},
"definitions": {
"Field": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"myCustomProperty": {
"$ref": "#/definitions/myCustomProperty"
},
"patternProperties": {
"^(?!myCustomProperty).*": {
"$ref": "#/definitions/Field"
}
}
},
"required": [
"type",
"myCustomProperty"
]
},
"myCustomProperty": {
//Some rules
}
}
}