たとえば、ファイルシステムのスキーマの場合、ディレクトリにはファイルのリストが含まれます。スキーマは、ファイルの指定、次にサブタイプ「イメージ」、もう1つの「テキスト」から構成されます。JSONスキーマバリデータにプロパティ値からスキーマを選択する方法を教えてください。
下部にメインディレクトリスキーマがあります。ディレクトリには、ファイルのサブタイプでなければならないアイテムの配列であるプロパティコンテンツがあります。
基本的に私が探しているのは、検証されているjsonオブジェクトのプロパティから "$ ref"の値を調べるようにバリデーターに指示する方法です。
例JSON:
{
"name":"A directory",
"content":[
{
"fileType":"http://x.y.z/fs-schema.json#definitions/image",
"name":"an-image.png",
"width":1024,
"height":800
}
{
"fileType":"http://x.y.z/fs-schema.json#definitions/text",
"name":"readme.txt",
"lineCount":101
}
{
"fileType":"http://x.y.z/extended-fs-schema-video.json",
"name":"demo.mp4",
"hd":true
}
]
}
「画像」と「テキスト」の定義は、同じスキーマに含まれていますが、彼らは他の場所で
{ "id": "http://x.y.z/fs-schema.json", "definitions": { "file": { "type": "object", "properties": { "name": { "type": "string" }, "fileType": { "type": "string", "format": "uri" } } }, "image": { "allOf": [ { "$ref": "#definitions/file" }, { "properties": { "width": { "type": "integer" }, "height": { "type": "integer"} } } ] }, "text": { "allOf": [ { "$ref": "#definitions/file" }, { "properties": { "lineCount": { "type": "integer"}}} ] } }, "type": "object", "properties": { "name": { "type": "string"}, "content": { "type": "array", "items": { "allOf": [ { "$ref": "#definitions/file" }, { *"$refFromProperty"*: "fileType" } // the magic thing ] } } } }
を定義するかもしれない「擬似」スキーマなお、
説明が必要です。ディレクトリデータが定義されているときに定義されている特定のプロパティをフルフィルにするように、ディレクトリ内のすべてのファイルアイテムを設計したいと思っています。 – jruizaranguren
プロパティファイルタイプ – redben