Динамически генерировать OpenApiSchema на C# из динамического объекта JsonC#

Место общения программистов C#
Ответить
Anonymous
 Динамически генерировать OpenApiSchema на C# из динамического объекта Json

Сообщение Anonymous »

Я хочу динамически генерировать OpenApiSchema из любого заданного объекта Json в .Net 6. У меня нет типов clr, доступных в коде для автоматического создания Open API Json, используемого Swashbuckle, и мне нужно делать это программно, а не с использованием инструмента генератора одного объекта. Кроме того, эти объекты Json будут часто меняться другими пользователями. Моя цель — динамически создать спецификацию OpenAPI на основе заданной полезной нагрузки json. Учитывая случайный объект Json, подобный следующему, и используя C# для создания моей собственной OpenApiSchema, аналогичной этому подходу https://taerimhan.com/exploring-openapi ... ic-schema/. Основное отличие, которое мне нужно сделать, — это подключить результаты непосредственно к OpenAPI, чтобы swashbuckle отображал для меня схемы и свойства динамически. См. образец Json...

Код: Выделить всё

{
"id": "123",
"unassumablepropertyname1": {
"id": "456",
"otherprop": null
},
"dynamicproperty": "456",
"somethinguseful": "ABC123"
}
Идеальным результатом было бы динамическое создание такой спецификации OpenAPI V3...

Код: Выделить всё

{
"openapi": "3.0.1",
"info": {
"title": "Sample API Capabilities",
"version": "v1"
},
"paths": {
"/api/DataRecord/UpsertDynamicObj12": {
"post": {
"tags": [
"Dynamic Objects"
],
"operationId": "UpsertDynamicExample",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DynamicObj12"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/DynamicObj12"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/DynamicObj12"
}
}
}
},
"responses": {
"200": {
"description": "Success"
}
}
}
}
},
"components": {
"schemas": {
"DynamicObj12": {
"required": [
"id"
],
"type": "object",
"properties": {
"id": {
"type": "string"
},
"dynamicproperty": {
"type": "string"
},
"somethinguseful": {
"type": "string"
},
"unassumablepropertyname1": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UnassumablePropertyName1"
},
"nullable": true
}
},
"additionalProperties": false
},
"UnassumablePropertyName1": {
"required": [
"id"
],
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"otherprop": {
"type": "string",
"format": "uuid"
}
},
"additionalProperties": false
}
}
}
}
Я просмотрел следующие близкие ресурсы, но ищу решение C#, чтобы можно было использовать Swashbuckle для множества различных объектов разных форм Json. Любой идеи?

Подробнее здесь: https://stackoverflow.com/questions/739 ... son-object
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»