ASP.NET MVC Core 3.0 API Serialize Enums to String


14

Bagaimana cara membuat serialisasi bidang Enum ke String alih-alih Int di ASP.NET MVC Core 3.0? Saya tidak bisa melakukannya dengan cara lama.

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

Saya mendapatkan kesalahan:

tidak dapat mengkonversi dari 'Newtonsoft.Json.Converters.StringEnumConverter' ke 'System.Text.Json.Serialization.JsonConverter'


ASP.NET Core 3.0 tidak termasuk JSON.NET yang berarti Anda harus menambahkan paket secara eksplisit sebelum mencoba kode ini
Panagiotis Kanavos

Jawaban:


28

System.Text.Json serialisasi baru

ASP.NET MVC Core 3.0 menggunakan serialisasi JSON bawaan. Gunakan System.Text.Json.Serialization.JsonStringEnumConverter(dengan awalan "Json"):

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

Info lebih lanjut di sini . Dokumentasi dapat ditemukan di sini .

Jika Anda lebih suka Newtonsoft.Json

Anda juga dapat menggunakan serialisasi Newtonsoft.Json "tradisional":

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

6
Jika Anda memiliki API Web, maka .AddMvc()Anda juga dapat menggunakannya services.AddControllers().AddJsonOptions(...).
Tobias
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.