次のJSON検証があります
var schema = {
"type": "object",
"required": ["name", "profession"],
"properties": {
"name": { "type": "string" },
"profession": {
"oneOf": [
{ "$ref": "#/definitions/developer" },
{ "$ref": "#/definitions/manager" }
]
}
},
"definitions": {
"developer": {
"type": "object",
"properties": {
"jobLevel": { "$ref": "#/definitions/jobLevels" },
"linesOfCode": { "type": "number" },
"languages": { "enum": ["C++", "C", "Java", "VB"] }
},
"required": ["jobLevel"]
},
"manager": {
"type": "object",
"properties": {
"jobLevel": { "$ref": "#/definitions/jobLevels" },
"peopleManaged": { "type": "number" },
"responsibilities": {
"type": "array",
"minItems": 1,
"items": "string",
"uniqueItems": true
}
},
"required": ["jobLevel"]
},
"jobLevels": { "enum": ["Beginner", "Senior", "Expert"] }
}
}
上記の検証文字列を使用して、次の JSON 文字列を検証しようとしました。
var validate = ajv.compile(schema);
var valid = validate({
"name": "David",
"profession": {
"jobLevel": "Expert",
"linesOfCode": 50000,
"languages": "Java"
},
});
ここで、「data.profession は oneOf 内の 1 つのスキーマと正確に一致する必要があります」というメッセージが表示されますが、データ内に正しいインスタンス変数などを含むインスタンスを 1 つだけ提供します。ここで私が間違っていることを教えてください。ちなみに、私はAJVバリデーターを使用しています。
ありがとうございました。