字符串属性正则模式验证失败问题咨询
JSON Schema验证失败问题分析与解决
问题场景
所用JSON Schema
{"type": "object","required": ["version"],"additionalProperties": false,"properties": {"version": {"type": "string","format": "date-time","examples": ["2020-08-20T13:57:33.034Z"],"pattern": "^.{27}$"}}}
待验证数据
{"version": "2025-01-28T07:24:28.090090Z"}
验证错误信息
找到1个错误
信息:
字符串'2025-01-28T07:24:28.090090Z'不匹配正则模式'^.{27}$'。
Schema路径:
#/properties/version/pattern
原因分析
Schema中version字段的正则^.{27}$强制要求字符串长度必须为27个字符,但待验证的2025-01-28T07:24:28.090090Z长度为29(毫秒部分是6位,而示例中的毫秒部分为3位,总长度27),因此触发匹配失败。
解决方案
- 调整Schema正则(推荐):将
pattern修改为兼容3到6位毫秒的正则,同时符合date-time格式规范,示例如下:{"type": "object","required": ["version"],"additionalProperties": false,"properties": {"version": {"type": "string","format": "date-time","examples": ["2020-08-20T13:57:33.034Z", "2025-01-28T07:24:28.090090Z"],"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3,6}Z$"}}} - 修改待验证数据:如果业务只需要3位毫秒精度,将数据改为
{"version": "2025-01-28T07:24:28.090Z"},使其长度符合27位要求。
内容的提问来源于stack exchange,提问作者am1988
相关产品推荐
相关产品推荐

