【发布时间】:2014-05-30 22:39:54
【问题描述】:
我的网络应用程序有以下 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"
}
}
}
}
我的目标是在我的应用程序的 api 请求中只接受三个“person_identifier”-email、rememberme_id 或 account_number 之一。我无法验证上述模式是否会强制执行所需的约束。 我曾尝试在 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: 'abc@abc.com',
rememberme_id: '1345'
}
};
alert('Validation: ' + tv4.validate(data, schema, true));
例如,jsfiddle 验证数据是否正确满足架构,而实际上它不应该满足。应该只允许一个输入标识符。我已经参考了几乎所有关于使用 oneOf 的可用问题和文档。关于我做错了什么的任何指示?谢谢。
【问题讨论】:
标签: json validation jsonschema