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。