Сгенерированный NSwag машинописный текст использует camelCase, в то время как .net5 webapi настроен для возврата JSON PascalCase

#c# #asp.net-core-webapi #.net-5 #nswag

Вопрос:

У меня есть контроллер webapi .net5, который возвращает ответы JSON в PascalCase:

[{«Электронная почта»:»user@email.com»,»Идентификатор»:16820,»Имя»:»Фамилия пользователя»,»Телефон»:null}, …

… достигается любой из следующих конфигураций, включенной в System.Text.Сериализатор Json:

 services.AddControllers()
            .AddJsonOptions(opt => opt.JsonSerializerOptions.PropertyNamingPolicy = null);
 

или путем ссылки Microsoft.AspNetCore.Mvc.NewtonsoftJson и настройки для NewtonSoftJSON.net:

 services.AddControllers()
            .AddNewtonsoftJson(c => c.SerializerSettings.ContractResolver = new DefaultContractResolver());
 

Мы не используем JsonProperty или что-либо в этом роде для украшения членов DTO

Использование NSwagStudio студийная версия

или CLIверсия cli,

сгенерированная спецификация OpenAPI правильно генерирует модели в PascalCase, но сгенерированные интерфейсы и классы машинописи используют camelCase, например:

 export interface IContact {
    email?: string | undefined;
    id: number;
    name?: string | undefined;
    phone?: string | undefined;
    ...
}
 

Нам нужно, чтобы сгенерированный интерфейс и члены класса находились в PascalCase.

В дополнение к переключению обратно на Newtonsoft я также играл с несколькими входами и настройками в NSwagStudio, чтобы создать вышеуказанные элементы интерфейса в PascalCase, но безрезультатно. Насколько я понимаю, NSwag переносит сериализацию в настройки проекта c#, чтобы сгенерированный код соответствовал выводам сериализатора .net core, но либо в моем случае этого не происходит, либо я что-то неправильно интерпретирую.

Можно ли настроить nSwag для создания классов и интерфейсов машинописного текста (углового шаблона) (вкл. их члены) в Паскаль-кейсе?

Комментарии:

1. В 2018 году владелец NSwag Рико Сутер прокомментировал : The casing in the interfaces is exactly as the properties in the Swagger spec, because in an interface, we cannot rename them (they must exactly match the received JSON structure).