У меня есть следующая схема json для моего веб-приложения.
{
"type":"object",
"properties": {
"person_identifier":{
"type":"object",
"oneOf":[
{"$ref":"#/person_identifier/rememberme_id"},
{"$ref":"#/person_identifier/email"},
{"$ref":"#/person_identifier/account_number"}
],
"email":{
"type":"string"
},
"rememberme_id":{
"type":"string"
},
"account_number":{
"type":"string"
}
}
}
}
Моя цель - принять только один из трех "person_identifier" - email, Rememberme_id или account_number в запросе API к моему приложению. Я не могу подтвердить, что приведенная выше схема будет обеспечивать соблюдение требуемых ограничений. Я пробовал выполнить проверку на jsfiddle.com, но он показывает, что моя схема неправильно проверяет ввод. Вот мой код для проверки на jsfiddle.com:
var data, schema;
schema = {
person_identifier:{
type:'object',
'oneOf':[
{$ref:'#/person_identifier/rememberme_id'},
{$ref:'#/person_identifier/email'},
{$ref:'#/person_identifier/buyer_account_number'}
],
'email':{
type:'string'
},
'rememberme_id':{
type:'string'
},
'account_number':{
type:'string'
}
}
};
data = {
person_identifier: {
email: '[email protected]',
rememberme_id: '1345'
}
};
alert('Validation: ' + tv4.validate(data, schema, true));
Например, jsfiddle проверяет данные как правильно соответствующие схеме, хотя этого не должно. Должен быть разрешен только один входной идентификатор. Я сослался почти на все доступные вопросы и документацию по использованию oneOf. Любые указатели на то, что я делаю неправильно? Спасибо.