Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSON模式:我们可以对类型执行非此即彼/或(string/int)吗?_Json_Types_Jsonschema - Fatal编程技术网

JSON模式:我们可以对类型执行非此即彼/或(string/int)吗?

JSON模式:我们可以对类型执行非此即彼/或(string/int)吗?,json,types,jsonschema,Json,Types,Jsonschema,我正在执行一个模式来验证联系人信息。 在电话号码验证中,我们有一个国家/地区代码。 我真的希望有一种方法可以允许国家代码是字符串或整数 来自不同国家/地区的用户告诉我,国家/地区代码中有时包含有意义的非整数字符(如“+”)。话虽如此,字符串还是有意义的。 另一方面,如果有人提供国家代码作为int,比如。。类似于33(法国),我觉得抛出故障警报并强迫他们将其转换为字符串并作为“33”重新发送有点可笑,几乎是自命不凡 我希望强制执行类型约束,以确保有人不尝试发送对象或数组,但我需要允许它是字符串或整

我正在执行一个模式来验证联系人信息。
在电话号码验证中,我们有一个国家/地区代码。
我真的希望有一种方法可以允许国家代码是
字符串
整数

来自不同国家/地区的用户告诉我,国家/地区代码中有时包含有意义的非整数字符(如“+”)。话虽如此,字符串还是有意义的。
另一方面,如果有人提供国家代码作为int,比如。。类似于
33
(法国),我觉得抛出故障警报并强迫他们将其转换为字符串并作为
“33”
重新发送有点可笑,几乎是自命不凡

我希望强制执行类型约束,以确保有人不尝试发送对象或数组,但我需要允许它是
字符串
整数


如何做到这一点?

您有多种选择,请选择:

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

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

"type": ["integer", "string"]

更多信息:

从相反的方向思考,是否有办法排除我不想要的类型,而不是包括我想要的类型?你是在谈论电话号码或地址吗?我没有想到你的第一个或最后一个建议(我希望避免为这样一件简单的事情复制这种大型模式的混乱。非常感谢。我可能会选择一个)。