在Mule中能否用同一JSON Schema验证单请求中的JSON请求数组?
能否用同一JSON Schema验证单个请求中的JSON数组?
当然可以!其实只需要对你现有的JSON Schema做一点点调整,就能轻松验证包含多个对象的JSON数组,完全不用重新编写一套验证规则。
先回顾一下你用来验证单个对象(比如{"name":"tom"})的基础Schema:
{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "name": { "type": "string", "minLength": 1 } }, "required": ["name"] }
要验证像[{"name":"tom"},{"name":"jerry"},{"name":"jhon"}]这样的数组,只需要把外层的type改成"array",然后通过items字段指定数组中每个元素必须遵循的规则——也就是你上面写的单个对象的验证逻辑。修改后的Schema如下:
{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 } }, "required": ["name"] }, // 可选:按需添加数组长度限制,比如至少1个元素,最多10个 "minItems": 1, "maxItems": 10 }
关键说明:
type: "array":告诉验证器当前要校验的是一个数组类型的JSONitems:定义数组中每个元素的验证规则,这里直接复用了你原来的单个对象Schema,这样数组里的每一项都会被严格按照name字段的规则校验- 可选的
minItems/maxItems:可以用来限制数组的长度范围,避免传入空数组或者过大的数组,根据你的业务需求决定是否添加
这样调整后,同一个核心的对象验证逻辑既可以用于单个请求,也可以用于数组请求,非常灵活。
内容的提问来源于stack exchange,提问作者Ratha
相关产品推荐
相关产品推荐

