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