使用json模式指定值可以是字符串或null

时间:2013-04-26 16:43:42

标签: c# .net json json.net jsonschema

希望这对其他人来说并不明显,因为我发现http://json-schema.org/的文档缺乏更精细的细节。我正在获得一个json块,其中包含一些可以为null或字符串的属性。如何在json模式(由json.NET的JsonSchema.Parse方法解析)中指定值可以是null类型还是类型字符串?

是否有一些简单的东西,比如提供类型的数组?例如;

  "member_region": { "type": [ "string", null ] } // this throws an exception

另外,有没有人比json-schema.org有更好的json架构细节来源?我在哪里可以找到更多的例子?我不想阅读一篇大文档/规范来找到一些可以在10行示例中轻松演示的内容。

3 个答案:

答案 0 :(得分:61)

来自http://json-schema.org/latest/json-schema-validation.html#anchor79

  

此关键字的值必须是字符串或数组。如果它是一个数组,那么数组的元素必须是字符串,并且必须是唯一的。

     

字符串值必须是核心规范定义的七种基本类型之一。

然后我们引用类型:http://json-schema.org/latest/json-schema-core.html#anchor8

列出字符串和null。尝试:

"member_region": { "type": [ "string", "null" ] }

答案 1 :(得分:1)

如果使用数组语法,则扩展爆炸药的答案:

"member_region": { "type": [ "string", "null" ] } // this works

因为您要说明的类型不是示例,所以不应该使用:

 "member_region": { "type": [ "string", null ] } // this throws an exception

答案 2 :(得分:-1)

["string", "null"] 如果您不使用 RegEx 模式,则可以使用。

我正在使用日期字段验证器:

    (0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\\d\\d 

允许使用 MM/dd/yyyy 模式,但它会在空字符串 ("") 处抛出不匹配错误