JSON模式:我们可以对类型执行非此即彼/或(string/int)吗?
我正在执行一个模式来验证联系人信息。JSON模式:我们可以对类型执行非此即彼/或(string/int)吗?,json,types,jsonschema,Json,Types,Jsonschema,我正在执行一个模式来验证联系人信息。 在电话号码验证中,我们有一个国家/地区代码。 我真的希望有一种方法可以允许国家代码是字符串或整数 来自不同国家/地区的用户告诉我,国家/地区代码中有时包含有意义的非整数字符(如“+”)。话虽如此,字符串还是有意义的。 另一方面,如果有人提供国家代码作为int,比如。。类似于33(法国),我觉得抛出故障警报并强迫他们将其转换为字符串并作为“33”重新发送有点可笑,几乎是自命不凡 我希望强制执行类型约束,以确保有人不尝试发送对象或数组,但我需要允许它是字符串或整
在电话号码验证中,我们有一个国家/地区代码。
我真的希望有一种方法可以允许国家代码是
字符串
或整数
来自不同国家/地区的用户告诉我,国家/地区代码中有时包含有意义的非整数字符(如“+”)。话虽如此,字符串还是有意义的。另一方面,如果有人提供国家代码作为int,比如。。类似于
33
(法国),我觉得抛出故障警报并强迫他们将其转换为字符串并作为“33”
重新发送有点可笑,几乎是自命不凡
我希望强制执行类型约束,以确保有人不尝试发送对象或数组,但我需要允许它是字符串
或整数
如何做到这一点?您有多种选择,请选择:
- 使用pattern属性,并使用正则表达式强制执行有效代码
- 将anyOf与两个模式一起使用。每个架构将验证整数或字符串类型
- 如果您拥有所有国家/地区代码(很容易获得),则可以使用枚举列表强制执行精确值
"type": ["integer", "string"]
更多信息:从相反的方向思考,是否有办法排除我不想要的类型,而不是包括我想要的类型?你是在谈论电话号码或地址吗?我没有想到你的第一个或最后一个建议(我希望避免为这样一件简单的事情复制这种大型模式的混乱。非常感谢。我可能会选择一个)。