web-dev-qa-db-fra.com

L'API ASP.NET MVC Core 3.0 sérialise les énumérations en chaîne

Comment sérialiser des champs Enum en chaîne au lieu d'un int dans ASP.NET MVC Core 3.0? Je ne peux pas le faire à l'ancienne.

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

Je reçois une erreur:

impossible de convertir de 'Newtonsoft.Json.Converters.StringEnumConverter' en 'System.Text.Json.Serialization.JsonConverter'

11
Andrei

Nouvelle sérialisation System.Text.Json

ASP.NET MVC Core 3.0 utilise la sérialisation JSON intégrée. Utilisation System.Text.Json.Serialization.JsonStringEnumConverter (avec le préfixe "Json"):

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

Plus d'informations ici . La documentation peut être trouvée ici .

Si vous préférez Newtonsoft.Json

Vous pouvez également utiliser la sérialisation "traditionnelle" de Newtonsoft.Json:

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