113

希望这对其他人来说并不明显,因为我发现https://json-schema.org/上的文档缺乏更详细的信息。我得到一个 JSON 块,其中一些属性可以nullstring. 如何在 JSON Schema 中(由 Json.NET 的JsonSchema.Parse方法解析)指定一个值可以是 typenull或 type string

是否有一些简单的东西我错过了,比如为类型提供一个数组?例如;

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

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

4

3 回答 3

161

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

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

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

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

尝试:

"member_region": { "type": ["string", "null"] }
于 2013-04-26T16:52:22.597 回答
74

如果您使用数组语法,则扩展 Explosion Pills 答案:

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

因为您在说明一种类型,而不是示例/值。你不应该去:

 "member_region": { "type": [ "string", null ] } // this throws an exception
于 2019-06-21T17:57:46.277 回答
-2

如果您不使用 RegEx 模式,["string", "null"] 将起作用。

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

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

允许 MM/dd/yyyy 模式,但会在空字符串 ("") 处引发不匹配错误

于 2021-04-30T13:42:56.020 回答