$ref が使用する json スキーマへの URI を取ることは理解していますが、 $ref : "#" はどこを指していますか? このブロック レベルに現在のスキーマを使用するということですか? それとも、ルート レベル ID で定義されたルート レベル スキーマを使用することを意味しますか? ありがとう
編集:だから私が持っている場合:
"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
}
「stringArray」の「items」フィールドは、上記の「itemsSchema」に対して検証されますか?
また、「anyOf」の 2 番目の $ref は、ルートに移動してから、そのスキーマに到達するまでパスをたどることで機能しますか? ありがとう!