JSON SCHEMA:我们可以为类型做一个或/或(字符串/整数)吗?

mOr*_*off 3 json types jsonschema

我正在做一个模式来验证联系信息。
在电话号码验证中,我们有一个国家/地区代码。
我真的希望有一种方法可以让国家/地区代码成为 astringinteger.

来自不同国家的用户告诉我,国家代码中有时会出现有意义的非整数字符(例如“+”)。话虽如此,字符串是有道理的。
另一方面,如果有人提供一个国家/地区代码作为 int,比如说 .. 像33(法国)这样的东西,我觉得抛出失败警报并强迫他们将其转换为一个有点荒谬,几乎是自命不凡字符串并将其重新发送为"33".

我想强制执行类型约束以确保有人不会尝试发送对象或数组,但我需要允许它是 astringinteger.
如何才能做到这一点?

小智 5

您可以使用以下方法验证多种类型:

"type": ["integer", "string"]
Run Code Online (Sandbox Code Playgroud)

更多信息:https : //cswr.github.io/JsonSchema/spec/multiple_types/


jru*_*ren 1

您有多种选择,请查看文档

  • 使用模式属性,并使用正则表达式来强制执行有效的代码。
  • 将anyOf 与两个模式一起使用。每个模式将验证整数或字符串类型。
  • 如果您拥有所有国家/地区代码(很容易获得),您可以使用枚举列表强制执行精确值。