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


14

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'


ASP.NET Core 3.0 n'inclut pas JSON.NET, ce qui signifie que vous avez dû ajouter explicitement le package avant d'essayer ce code
Panagiotis Kanavos

Réponses:


28

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'infos ici . La documentation se trouve 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()));

6
Si vous avez une API Web, .AddMvc()vous pouvez également l'utiliser à la place services.AddControllers().AddJsonOptions(...).
Tobias
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.