json模式验证.如何接受数组或null

本文关键字:数组 null 何接受 模式 验证 json | 更新日期: 2023-09-27 18:21:53

我们已经在休息层上实现了json模式验证(使用newtonsoft)。这真的很重要,但我有一个可能性和如何做到的问题

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

选择:[]。。。。。。。

选择:["你好","世界"]

选项:null。。。。。

下面是json模式定义的精简示例

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

显然,前两个示例通过了验证,但后者失败了,出现了"预期数组"错误。

该属性是可选的。

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

谢谢。

-r

json模式验证.如何接受数组或null

您可以指定一个可能类型的数组,如下所示;

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

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

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

您是否尝试将choices的默认值设置为[]

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