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

希望这对其他人来说不是显而易见的,因为我发现 https://json-schema.org/的文档缺乏更精细的细节。我得到了一个带有一些属性的 JSON 块,这些属性可以是 null,也可以是 string。如何在 JSON 模式(将由 JSON.NET 的 JsonSchema.Parse方法解析)中指定值的类型为 nullstring

我是否遗漏了一些简单的东西,比如为类型提供一个数组

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

还有,是否有人有比 JSON-Schema.org 更好的 JSON 模式细节来源?我在哪里可以找到更多的例子?我不想通过阅读一个大的文档/规范来找到一些可以在10行示例中轻松演示的东西。

109880 次浏览

来自 https://json-schema.org/understanding-json-schema/reference/type.html

type关键字可以是字符串,也可以是数组:

  • 如果它是一个字符串,那么它就是上述基本类型之一的名称。
  • 如果它是一个数组,那么它必须是一个 字符串数组字符串数组,其中每个字符串是一个基本类型的名称,每个元素都是唯一的。在这种情况下,如果 JSON 代码片段与给定类型的 任何匹配,那么它就是有效的

同一页面还列出了定义的数据类型名称,包括 stringnull

试试:

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

扩展到“爆炸药丸”如果你使用数组语法,答案是:

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

因为你在陈述一个类型,而不是一个例子/值。你不应该去:

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

如果不使用 RegEx 模式,那么[“ string”,“ null”]就可以工作。

我使用了一个日期字段验证器:

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

允许 MM/dd/yyyy 模式,但是它会在空字符串(“”)处抛出非匹配错误