【问题标题】:Json Schema Validation in Asp.Net Web api using C#使用 C# 在 Asp.Net Web api 中进行 Json 模式验证
【发布时间】:2015-01-16 15:37:01
【问题描述】:

目标: 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']}]
}

testJson1: { “prop2”:“fdsd”, “道具3”:“101655”, "prop4":"E8CD6fghggg" } 注意:这很好: testJson2 { “道具3”:“101655”, "prop4":"E8CD6fghggg" } 注意:这也是有效的,但预期无效。

【问题讨论】:

    标签: asp.net json asp.net-web-api jsonschema


    【解决方案1】:

    您正在使用两种不同的方式来表达所需的属性:

    对于“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,然后选择合适的验证器。

    【讨论】:

      猜你喜欢
      • 2020-09-06
      • 1970-01-01
      • 2022-11-21
      • 2018-03-19
      • 2015-01-12
      • 2017-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多