ASP.NET MVC Core 3.0 API Serializza Enum su String


14

Come serializzare i campi Enum su String anziché su Int in ASP.NET MVC Core 3.0? Non sono in grado di farlo alla vecchia maniera.

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

Ricevo un errore:

impossibile convertire da "Newtonsoft.Json.Converters.StringEnumConverter" a "System.Text.Json.Serialization.JsonConverter"


ASP.NET Core 3.0 non include JSON.NET, il che significa che è stato necessario aggiungere esplicitamente il pacchetto prima di provare questo codice
Panagiotis Kanavos

Risposte:


28

Nuova serializzazione System.Text.Json

ASP.NET MVC Core 3.0 utilizza la serializzazione JSON integrata. Usa System.Text.Json.Serialization.JsonStringEnumConverter(con il prefisso "Json"):

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

Maggiori informazioni qui . La documentazione è disponibile qui .

Se preferisci Newtonsoft.Json

Puoi anche utilizzare la serializzazione NewTonsoft.Json "tradizionale":

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

6
Se si dispone di un'API Web, .AddMvc()è possibile utilizzare anche invece di te services.AddControllers().AddJsonOptions(...).
Tobias,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.