JSON Schema能否要求属性值相等?及扩展运算支持咨询
JSON Schema 字段关联与运算支持问题解答
一、实现a == meta.a的方法
标准JSON Schema Draft 7及更早版本不支持跨字段相等校验,但Draft 2019-09及后续版本引入了$data关键字,可实现该需求:
{ "properties":{ "a": { "type":"string"}, "meta": { "type": "object", "properties": { "a": { "type": "string", "$data": "/a" } }, "required": ["a"] } }, "required": ["a"] }
$data可以引用当前JSON实例的其他字段值,强制meta.a与根节点的a完全一致。注意:需确认所用校验器支持Draft 2019-09或更新版本。
二、子字符串、幂运算的支持情况
1. 子字符串校验
标准JSON Schema通过pattern关键字(基于正则表达式)实现子串相关校验:
- 示例:校验
a包含子串"test"
{ "properties": { "a": { "type": "string", "pattern": "test" } } }
若需提取子串等复杂操作,标准规范不支持,需依赖校验器扩展或业务逻辑层处理。
2. 幂运算(数字类型场景)
标准JSON Schema不支持直接的幂运算校验,仅能通过maximum/minimum、multipleOf做间接约束。若需实现如a = b²这类关联运算,可结合$data关键字(部分校验器支持),或在业务逻辑层处理自定义运算逻辑。
内容的提问来源于stack exchange,提问作者Joseph Summerhays
相关产品推荐
相关产品推荐

