Я понимаю, что $ref берет URI для использования json-схемы, но где $ref: "#" указывает на? Это просто означает использование текущей схемы для этого уровня блока? Или это означает использовать схему корневого уровня, определенную в идентификаторе корневого уровня? Спасибо
EDIT: Поэтому, если у меня есть:
"items": {
"anyOf": [
{ "$ref": "#" },
{ "$ref": "#/definitions/schemaArray" }
],
"default": {}
}
Поскольку в нем отсутствует поле идентификатора, он сначала попытается проверить элементы экземпляра с корневой схемой, а затем, если это не удается, попробуйте проверить его с помощью схемы schemaArray, определенной в схеме определений, правильно?
Итак, если я изменю его на:
"items": {
"id" : "#/items",
"anyOf": [
{ "$ref": "#" },
{ "$ref": "#/definitions/schemaArray" }
],
"default": {}
}
Тогда первая подсхема в массиве anyOf укажет на сама схема элементов?
EDIT # 2: Хорошо, если бы у меня было:
"items": {
"id" : "itemSchema",
"anyOf": [
{ "$ref": "#" },
{ "$ref": "#/definitions/schemaArray" }
],
"default": {}
}
и
"stringArray": {
"type": "array",
"items": { "$ref" : "itemSchema" },
"minItems": 1,
"uniqueItems": true
}
Поле "itemsArray" "items" будет проверено против вышеуказанных "itemsSchema"?
Также работает ли второй $ref в 'anyOf', перейдя к корню, а затем пересекая путь до тех пор, пока он не ударит по этой схеме? Благодарю!