Json Asp.Net Web api 中的架构验证使用 C#
Json Schema Validation in Asp.Net Web api using C#
目标: prop1 或 prop2 中的一个是必需的,prop3、prop4 始终是必需的
问题:
我尝试使用以下 json 模式验证 json 请求,但我只能验证 prop3 和 prop4。
Json 架构:
{
'type':'object',
'properties':{
'prop1':{'type':'string'},
'prop2':{'type':'string'},
'prop3':{'type':'string','required':true},
'prop4':{'type':'string','required':true}
},
'additionalProperties':false,
'anyOf':[{'required':['prop1']},{'required':['prop2']}]
}
测试Json1:
{
"prop2":"fdsd",
"prop3":"101655",
"prop4":"E8CD6fghggg"
}
注:这个不错:
测试Json2
{
"prop3":"101655",
"prop4":"E8CD6fghggg"
}
注意:这也是有效的,但预计无效。
您正在使用两种不同的方式来表达所需的属性:
对于 'prop3' 和 'prop4',您正在使用 json-schema Draft V3 方式来指定必需的。
'prop3':{'required':true},
对于 'prop1' 和 'prop2',您使用的是 json-schema Draft v4(需要一个数组)。
'required':['prop1']
您可能正在使用 Newtonsoft Json.Net,它使用 Draft v3。这就是您只能使 'prop3' 和 'prop4) 正常工作的原因。所以你需要把required的规范统一改成V3或者V4,然后选择合适的validator。
目标: prop1 或 prop2 中的一个是必需的,prop3、prop4 始终是必需的
问题: 我尝试使用以下 json 模式验证 json 请求,但我只能验证 prop3 和 prop4。
Json 架构:
{
'type':'object',
'properties':{
'prop1':{'type':'string'},
'prop2':{'type':'string'},
'prop3':{'type':'string','required':true},
'prop4':{'type':'string','required':true}
},
'additionalProperties':false,
'anyOf':[{'required':['prop1']},{'required':['prop2']}]
}
测试Json1: { "prop2":"fdsd", "prop3":"101655", "prop4":"E8CD6fghggg" } 注:这个不错: 测试Json2 { "prop3":"101655", "prop4":"E8CD6fghggg" } 注意:这也是有效的,但预计无效。
您正在使用两种不同的方式来表达所需的属性:
对于 'prop3' 和 'prop4',您正在使用 json-schema Draft V3 方式来指定必需的。
'prop3':{'required':true},
对于 'prop1' 和 'prop2',您使用的是 json-schema Draft v4(需要一个数组)。
'required':['prop1']
您可能正在使用 Newtonsoft Json.Net,它使用 Draft v3。这就是您只能使 'prop3' 和 'prop4) 正常工作的原因。所以你需要把required的规范统一改成V3或者V4,然后选择合适的validator。