我使用AJV作为API输入的模式验证器。
我需要验证是否收到以下格式的数据:
floors: [
{
name: "Floor 1",
rooms: [
{
name: "Room 1"
},
... more rooms
]
},
... more floors
]
基本上是Array of Objects
,那些对象也有Array of Objects
。每个楼层都有一个或多个房间。
是否可以使用AJV使用干净的JSON模式验证此数据,还是需要为AJV编写一些自定义关键字/验证器?
我尝试这样做,但最终还是这样做了,但似乎不起作用:
floors: {
type: "object",
minProperties: 1,
properties: {
name: {
type: "string"
},
rooms: {
type: "object",
minProperties: 1,
properties: {
name: {
type: "string"
}
},
required: ["name"]
}
},
required: ["name", "rooms"]
}
答案 0 :(得分:1)
我想自己找到了解决方法:
floors: {
type: "array",
minItems: 1,
items: {
type: "object",
properties: {
name: {
type: "string"
},
rooms: {
type: "array",
minItems: 1,
items: {
type: "object",
properties: {
name: {
type: "string"
}
},
required: ["name"],
additionalProperties: false,
},
}
},
required: ["name", "rooms"],
additionalProperties: false,
}
}
更正我是否存在一些安全漏洞,您可以在其中泄漏一些无效的东西:)