在JSON Schema中指定一个值可以是字符串或null



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

是否有一些简单的我错过了像提供数组的类型?例如,

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

另外,还有人有比jsonschema.org更好的JSON模式详细信息来源吗?我在哪里可以找到更多的例子?我不想阅读一份大文档/规范来寻找一些可以在10行示例中轻松演示的内容。

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

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

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

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

试题:

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

如果你选择数组语法,就可以扩展爆炸药丸的答案:

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

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

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

anyOf也可能有用。

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

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

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

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

允许MM/dd/yyyy模式,但是对于空字符串(")

会抛出不匹配错误。

相关内容

  • 没有找到相关文章