ASP.NET MVC Core 3.0 API Numaraları dizeye diziler


14

ASP.NET MVC Core 3.0 bir Int yerine Enum alanları dize seri hale nasıl? Eski yoldan yapamıyorum.

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

Bir hata alıyorum:

'Newtonsoft.Json.Converters.StringEnumConverter' öğesinden 'System.Text.Json.Serialization.JsonConverter' öğesine dönüştürülemiyor


ASP.NET Core 3.0 JSON.NET içermiyor, yani bu kodu denemeden önce paketi açıkça eklemeniz gerekiyor
Panagiotis Kanavos

Yanıtlar:


28

Yeni System.Text.Json serileştirmesi

ASP.NET MVC Core 3.0 yerleşik JSON serileştirme kullanır. Kullanım System.Text.Json.Serialization.JsonStringEnumConverter("Json" öneki ile):

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

Daha fazla bilgi burada . Belgeleri burada bulabilirsiniz .

Newtonsoft.Json'u tercih ederseniz

"Geleneksel" Newtonsoft.Json serileştirmeyi de kullanabilirsiniz:

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

6
Web API'niz varsa bunun yerine .AddMvc()kullanabilirsiniz services.AddControllers().AddJsonOptions(...).
Tobias
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.