JSON 架构 — 针对多个可为空的架构进行验证?
JSON Schema — Validate against multiple nullable schemas?
我正在尝试根据以下架构验证 null
:
{
oneOf: [
{ type: "string", nullable: true },
{ type: "number", nullable: true },
]
}
我原以为验证会成功,但事实并非如此。没有 oneOf
(所以只有一个模式,但仍然有 nullable: true
)验证通过。
这是我的示例代码:
import Ajv from "ajv";
const ajv = new Ajv();
const schema = {
oneOf: [
{ type: "string", nullable: true },
{ type: "number", nullable: true },
],
};
const data = null;
const validate = ajv.compile(schema);
const valid = validate(data);
if (!valid) {
console.log(validate.errors);
} else {
console.log("Validation Success");
}
我正在使用 Ajv@8.11.0
和 open api specification 3.0
我认为您可以在 JSON 架构中添加 {type: "null"} 作为选项之一。有关详细信息,请参阅:https://json-schema.org/understanding-json-schema/reference/null.html
将 oneOf
更改为 anyOf
。它失败的原因是因为 oneOf
要求数据匹配 恰好一个 模式,但是 null
将匹配两者。
我正在尝试根据以下架构验证 null
:
{
oneOf: [
{ type: "string", nullable: true },
{ type: "number", nullable: true },
]
}
我原以为验证会成功,但事实并非如此。没有 oneOf
(所以只有一个模式,但仍然有 nullable: true
)验证通过。
这是我的示例代码:
import Ajv from "ajv";
const ajv = new Ajv();
const schema = {
oneOf: [
{ type: "string", nullable: true },
{ type: "number", nullable: true },
],
};
const data = null;
const validate = ajv.compile(schema);
const valid = validate(data);
if (!valid) {
console.log(validate.errors);
} else {
console.log("Validation Success");
}
我正在使用 Ajv@8.11.0
和 open api specification 3.0
我认为您可以在 JSON 架构中添加 {type: "null"} 作为选项之一。有关详细信息,请参阅:https://json-schema.org/understanding-json-schema/reference/null.html
将 oneOf
更改为 anyOf
。它失败的原因是因为 oneOf
要求数据匹配 恰好一个 模式,但是 null
将匹配两者。