1
次の配列項目を検証する必要があります。JSONスキーマ内の任意の定義を持つ配列内のすべてのインスタンスを検証する方法
{
contents: [{
type: "text",
content: "This is text context"
}, {
type: "image",
content: "http://image.url"
}]
}
コンテンツアレイ内のすべてのアイテムを検証する必要があります。
コンテンツオブジェクトは、それぞれtype
とcontent
のプロパティを持つ必要があります。 type
は、「テキスト」、「画像」または「ビデオ」とすることができます。 画像または動画の場合、content
は有効なURLである必要があります。
私は以下のスキーマを書いています。
{
"id": "post",
"description": "generell schema for a post",
"definitions": {
"contents": {
"type": "array",
"minItems": 1,
"items": {
"allOf": [
{ "$ref": "#/definitions/text" },
{ "$ref": "#/definitions/image" },
{ "$ref": "#/definitions/video" },
{ "$ref": "#/definitions/mention" }
]
}
},
"text": {
"properties": {
"type": {"enum": ["text"]},
"content": {"type": "string"}
},
"required": [
"content",
"type"
]
},
"image": {
"properties": {
"type": {"enum": ["image"]},
"content": {
"type": "string",
"format": "url"
}
},
"required": [
"content",
"type"
]
},
"video": {
"properties": {
"type": {"enum": ["video"]},
"content": {
"type": "string",
"format": "url"
}
},
"required": [
"content",
"type"
]
}
}
}
ただし、上記のJSONはスキーマでは無効です。それはdata.contents[0].type should be equal to one of the allowed values
私はanyOfの代わりに使用する場合は有効です。しかし、イメージの内容は有効なURLのない文字列にすることができます。
正しいスキーマは何ですか?
質問は? – Pedro