Мой API документирован с использованием Swagger OAS3. У меня есть свойство, определенное с помощью YAML как:
LoanAmount:
type: number
nullable: true
Результирующий JSON, который я могу экспортировать из чванства, выглядит следующим образом:
"LoanAmount": {
"type": "number",
"nullable": true
},
Когда я тестирую проверку с использованием jsonschemavalidator со схемой как:
{
"title": "A JSON Schema for OpenAPI 3.0.",
"id": "http://openapis.org/v3/schema.json#", "$schema":
"http://json-schema.org/", "type": "object",
"properties": {
"LoanAmount": {
"type": "number",
"nullable": true}
}
}
и введите как:
{
"LoanAmount" : null
}
Сбой проверки с
"Недопустимый тип. Ожидаемый номер, но получил нулевое значение"
Я могу сделать эту работу, используя:
"LoanAmount": {
"type": ["number","null"]
}
Однако я не могу понять, как это определить, используя OAS3 YAML. Моя цель не состоит в том, чтобы поддерживать отдельную схему за пределами хаба-концентратора, чтобы удовлетворить мои необязательные требования ко многим полям в моем API.
Swagger docs page описывает, что OAS3 "использует расширенное подмножество спецификации схемы JSON Wright Draft 00 (он же Draft 5) для описания форматов данных ..."
В документации по Json.Net Schema говорится, что «поддерживает 100% JSON Schema Draft 6 и имеет обратную совместимость со старыми версиями»
Мое предположение состоит в том, что атрибут nullable OAS3 является одной из расширенных функций подмножества, а не частью какого-либо проекта схемы JSON, но я жду подтверждения этого, прежде чем я продолжу.