Interfejs API ASP.NET MVC Core 3.0 szereguje wyliczenia do ciągów


13

Jak serializować pola Enum do String zamiast Int w ASP.NET MVC Core 3.0? Nie jestem w stanie zrobić tego po staremu.

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

Pojawia się błąd:

nie można przekonwertować z „Newtonsoft.Json.Converters.StringEnumConverter” na „System.Text.Json.Serialization.JsonConverter”


Program ASP.NET Core 3.0 nie obejmuje JSON.NET, co oznacza, że ​​przed wypróbowaniem tego kodu trzeba było wyraźnie dodać pakiet
Panagiotis Kanavos

Odpowiedzi:


28

Nowa serializacja System.Text.Json

Program ASP.NET MVC Core 3.0 korzysta z wbudowanej serializacji JSON. Użyj System.Text.Json.Serialization.JsonStringEnumConverter(z prefiksem „Json”):

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

Więcej informacji tutaj . Dokumentację można znaleźć tutaj .

Jeśli wolisz Newtonsoft.Json

Możesz także użyć „tradycyjnej” serializacji Newtonsoft.Json:

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

6
Jeśli masz interfejs API sieci Web .AddMvc(), możesz zamiast tego również użyć services.AddControllers().AddJsonOptions(...).
Tobias
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.