ASP.NET MVC Core 3.0 API nối tiếp các chuỗi thành chuỗi


14

Làm cách nào để tuần tự hóa các trường Enum thành Chuỗi thay vì Int trong ASP.NET MVC Core 3.0? Tôi không thể làm theo cách cũ.

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

Tôi đang gặp lỗi:

không thể chuyển đổi từ 'Newtonsoft.Json.Converters.StringEnumConverter' thành 'System.Text.Json.Serialization.JsonConverter'


ASP.NET Core 3.0 không bao gồm JSON.NET, có nghĩa là bạn phải thêm gói rõ ràng trước khi thử mã này
Panagiotis Kanavos

Câu trả lời:


28

Hệ thống mới serial.Text.Json

ASP.NET MVC Core 3.0 sử dụng tuần tự hóa JSON tích hợp. Sử dụng System.Text.Json.Serialization.JsonStringEnumConverter(với tiền tố "Json"):

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

Thêm thông tin ở đây . Các tài liệu có thể được tìm thấy ở đây .

Nếu bạn thích Newtonsoft.Json

Bạn cũng có thể sử dụng tuần tự hóa "truyền thống" Newtonsoft.Json:

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

6
Nếu bạn có API Web thì thay vì .AddMvc()bạn cũng có thể sử dụngservices.AddControllers().AddJsonOptions(...) .
Tobias
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.