{
"type": "array", // ← ルートレベルでは、データは配列
"items": {
"type": "object", // ← 配列の各要素はマップ
"properties": { // ← マップ内の各フィールドのプロパティ
"myNumber": { "type": "number" }, // ← myNumber は数値
"myString": { "type": "string" }, // ← myString は文字列
// ↓ myEnum は"myVal"と"yourVal"の 2 つの選択肢を持つ列挙値
"myEnum": { "enum": ["myVal", "yourVal"] },
"myBool": { "type": "boolean" } // ← myBool はブール値
"myAge": { // ← myAge は 0~120 の整数
"type": "integer",
"minimum": 0,
"maximum": 120
},
"myBirthday": { // ← myBirthday は日付フォーマットに準拠する文字列
"type": "string",
"format": "date"
},
"myLetters": { // ← myLetters は文字(小文字または大文字)だけで構成された文字列
"type": "string",
"pattern": "[a-zA-Z]*"
}
"myNumberMap": { // ← myNumberMap はすべての値が数値である同種文字列マップ
"type": "object",
"additionalProperties": { "type": "number" }
},
"myTuple": { // ← myTuple は 1 つ目の要素が文字列、2 つ目の要素が数値のタプル
"type": "array",
"prefixItems": [
{ "type": "string" },
{ "type": "number" }
]
} },
// ↓ マップの必須フィールドは myNumber と myString。他のフィールドはオプション
"required": ["myNumber", "myString"],
// ↓ スキーマで明示的に指定されていないフィールドは許可しない
"additionalProperties": false
}
}