JSON-Schema zur Verwendung von $ ref
Ich verstehe, dass $ ref einen URI für die Verwendung eines JSON-Schemas benötigt, aber wohin zeigt $ ref: "#"? Bedeutet dies nur, das aktuelle Schema für diese Blockstufe zu verwenden? Oder bedeutet es, das in der ID der Stammebene definierte Schema der Stammebene zu verwenden? Vielen Dank
EDIT: Also wenn ich habe:
"items": {
"anyOf": [
{ "$ref": "#" },
{ "$ref": "#/definitions/schemaArray" }
],
"default": {}
}
Da es kein ID-Feld gibt, wird zuerst versucht, die Instanzelemente mit dem Stammschema zu validieren. Wenn dies fehlschlägt, wird versucht, sie mit dem im Definitionsschema definierten schemaArray-Schema zu validieren, richtig?
Also, wenn ich es ändere:
"items": {
"id" : "#/items",
"anyOf": [
{ "$ref": "#" },
{ "$ref": "#/definitions/schemaArray" }
],
"default": {}
}
Dann zeigt das erste Teilschema in einem Array von anyOf auf das Elementschema selbst.
EDIT # 2: Okay, wenn ich hätte:
"items": {
"id" : "itemSchema",
"anyOf": [
{ "$ref": "#" },
{ "$ref": "#/definitions/schemaArray" }
],
"default": {}
}
und
"stringArray": {
"type": "array",
"items": { "$ref" : "itemSchema" },
"minItems": 1,
"uniqueItems": true
}
Das Feld "items" von "stringArray" wird mit dem obigen Feld "itemsSchema" verglichen.
Funktioniert der zweite $ ref in 'anyOf' auch, indem er zur Wurzel geht und dann den Pfad entlang läuft, bis er dieses Schema erreicht? Vielen Dank!