11

我们已经在我们的休息层实现了 json 模式验证(使用 newtonsoft)。这确实有所作为,但我有一个可能性以及如何去做的问题。

对于特定属性,以下是有效的(根据产品所有者):

.... 选择:[] ....

....选择:[“你好”,“世界”]

....选择:空.....

这是 json 模式定义的精简示例

{
   'description': 'myDescription',
   'type': 'object',
   'properties':
    {
     'name': {'type':'string', 'required': true},
     'description': {'type':'string'},
     'choices': {'type': 'array', 
         'items': {'type': 'string'}}
}

显然,前 2 个示例通过了验证,但后者因“期望数组”错误而失败。

该属性是可选的。

顺便说一句,如果有人有关于 json 模式定义的全套文档的良好链接,我很乐意得到它。我还没有找到一个好的单一来源,但我确信有一个。

谢谢你。

-r

4

2 回答 2

21

您可以像这样指定一个可能类型的数组;

"myProperty": { "type": [ "array", "null" ], "required":false }

如果“myProperty”是类型数组中的任何类型,则 json 将通过验证。我将 required 设置为 false 因为您说这是一个可选属性,只有当 json 中不存在该属性时才会使其通过。如果您已将 required 设置为 false 并且属性在 json 中但类型错误,则验证将失败。

这些是我所知道的关于 json 模式的最佳文档;http://json-schema.org/latest/json-schema-validation.html该站点缺少有用的示例,但您需要的任何详细信息都将在文档中。

于 2013-07-09T17:24:45.807 回答
1

您是否尝试过为choicesbe设置默认值[]

我假设,既然您说该属性是可选的,那么您正在使用可选参数语法C#还是我不正确?

于 2013-07-09T17:23:32.427 回答