Массив объектов пользовательской модели в Swagger - PullRequest
0 голосов
/ 03 мая 2018

В классе, который управляется из IDocumentFilter

Я могу просмотреть документ swagger и добавить новые свойства под

SwaggerDocument дает мне определение из этого.

Затем я создаю новое свойство и назначаю массив в виде схемы, такой как;

swagDoc.properties["JsonData"].properties.Add("Parent", new Schema() { type = "array" });

Это позволяет документу иметь свойство массива под документом JsonData

Затем я хочу открыть цикл для привязки дочерних свойств в родительской схеме, таких как;

for (int i = 1; i < 10; i++) 
{
    swagDoc.properties["JsonData"].properties["Parent"].properties.Add(
        "Child"+i.ToString(), 
        new Schema() { type = "string" }); 
}      

Я ожидаю, что объект Json во входных данных запроса Swagger так же, как;

{
    "JsonData": { 
        "request_rejected_date": "string", 
        "report_delivered_date": "string", 
        "report_cancelled_date": "string", 
        "Parent": [ { 
            "child1": "string", 
            "child2": "string", 
            "child3": "string", 
            "child4": "string", 
            "child5": "string", 
            "child6": "string", 
            "child7": "string",
            "child8": "string", 
            "child9": "string" 
        } ] 
    } 
}

У меня нет определенного класса для привязки, я генерирую модель динамически в Swagger

Тем не менее, приведенный выше код не производит ничего подобного - как мне этого добиться?

Спасибо

1 Ответ

0 голосов
/ 03 мая 2018

После игры с объектом, вот подход, который работает, по-видимому (:

swagDoc.properties["JsonData"].properties["Parent"].items = new Schema() { properties = new Dictionary<string, Schema>() };

 var schemaChild = new Schema() { description = "Child1", type = "string" };

swagDoc.properties["JsonData"].properties["Parent"].items.properties.Add("child1", schemaChild);       
...