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!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage