Я пытаюсь проверить 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.info(validate.errors);
} else {
console.info("Validation Success");
}
Я использую [email protected]
и open api specification 3.0
Я думаю, вы можете добавить {type: "null"} в свою схему JSON в качестве одного из вариантов. Для получения дополнительной информации см.: https://json-schema.org/understanding-json-schema/reference/null.html
Замените oneOf
на anyOf
. Причина сбоя в том, что oneOf
требует, чтобы данные соответствовали схеме ровно один, однако null
будет соответствовать обоим.
я использую спецификацию openapi 3.0, где нулевой тип удален @Dvir