ASP.NET MVC Core 3.0 API Serialize Enums to String


14

Wie serialisiere ich Enum-Felder in ASP.NET MVC Core 3.0 in String anstelle eines Int? Ich kann es nicht so machen wie früher.

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

Ich erhalte eine Fehlermeldung:

kann nicht von 'Newtonsoft.Json.Converters.StringEnumConverter' in 'System.Text.Json.Serialization.JsonConverter' konvertieren


ASP.NET Core 3.0 enthält kein JSON.NET, was bedeutet, dass Sie das Paket explizit hinzufügen mussten, bevor Sie diesen Code
ausprobieren konnten

Antworten:


28

Neue System.Text.Json-Serialisierung

ASP.NET MVC Core 3.0 verwendet die integrierte JSON-Serialisierung. Verwendung System.Text.Json.Serialization.JsonStringEnumConverter(mit dem Präfix "Json"):

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

Mehr Infos hier . Die Dokumentation finden Sie hier .

Wenn Sie Newtonsoft.Json bevorzugen

Sie können auch die "traditionelle" Newtonsoft.Json-Serialisierung verwenden:

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

6
Wenn Sie eine Web-API haben .AddMvc(), können Sie diese stattdessen auch verwenden services.AddControllers().AddJsonOptions(...).
Tobias
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.