ASP.NET MVC Core 3.0 API เป็นอนุกรม Enums เป็นสตริง


13

วิธีการทำให้เป็นอันดับ Enum เขตข้อมูลเพื่อสายอักขระแทนการ Int ใน ASP.NET MVC Core 3.0 ฉันไม่สามารถทำแบบเก่าได้

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

ฉันได้รับข้อผิดพลาด:

ไม่สามารถแปลงจาก 'Newtonsoft.Json.Converters.StringEnumConverter' เป็น 'System.Text.Json.Serialization.JsonConverter'


ASP.NET Core 3.0 ไม่รวม JSON.NET ซึ่งหมายความว่าคุณต้องเพิ่มแพคเกจอย่างชัดเจนก่อนที่จะลองใช้รหัสนี้
Panagiotis Kanavos

คำตอบ:


28

ใหม่การทำให้เป็นอันดับ System.Text.Json ใหม่

ASP.NET MVC Core 3.0 ใช้การทำให้เป็นอันดับ JSON ในตัว ใช้System.Text.Json.Serialization.JsonStringEnumConverter(พร้อมคำนำหน้า "Json"):

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

ข้อมูลเพิ่มเติมที่นี่ เอกสารที่สามารถพบได้ที่นี่

ถ้าคุณชอบ Newtonsoft.Json

นอกจากนี้คุณยังสามารถใช้อนุกรมดั้งเดิมของ Newtonsoft.Json:

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

6
หากคุณมี Web API .AddMvc()คุณสามารถใช้services.AddControllers().AddJsonOptions(...)แทนได้
โทเบียส
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.