API ASP.NET MVC Core 3.0 серіалізує перерахунки до рядкових


13

Як серіалізувати поля Enum до String замість Int в ASP.NET MVC Core 3.0? Я не в змозі зробити це по-старому.

services.AddMvc().AddJsonOptions(opts =>
{
    opts.JsonSerializerOptions.Converters.Add(new StringEnumConverter());
})

Я отримую помилку:

не вдається перетворити з "Newtonsoft.Json.Converters.StringEnumConverter" у "System.Text.Json.Serialization.JsonConverter"


ASP.NET Core 3.0 не включає JSON.NET, що означає, що вам довелося додати пакет явно перед тим, як спробувати цей код
Panagiotis Kanavos

Відповіді:


28

Нова серіалізація System.Text.Json

ASP.NET MVC Core 3.0 використовує вбудовану JSON серіалізацію. Використовувати System.Text.Json.Serialization.JsonStringEnumConverter(з префіксом "Json"):

services
    .AddMvc()
    // Or .AddControllers(...)
    .AddJsonOptions(opts =>
    {
        opts.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
    })

Більше інформації тут . Документацію можна знайти тут .

Якщо ви віддаєте перевагу Newtonsoft.Json

Ви також можете використовувати "традиційну" серіалізацію Newtonsoft.Json:

services
    .AddControllers()
    .AddNewtonsoftJson(opts => opts.Converters.Add(new StringEnumConverter()));

6
Якщо у вас є веб-API, замість нього .AddMvc()ви також можете використовувати services.AddControllers().AddJsonOptions(...).
Тобіас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.