ASP.NET MVC Core 3.0 API 열거 형을 문자열로 직렬화


13

ASP.NET MVC Core 3.0에서 Enum 필드를 Int 대신 String으로 직렬화하는 방법은 무엇입니까? 옛날 방식으로는 할 수 없습니다.

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

오류가 발생했습니다 :

'Newtonsoft.Json.Converters.StringEnumConverter'에서 'System.Text.Json.Serialization.JsonConverter'로 변환 할 수 없습니다


ASP.NET 코어 3.0이 코드 시도하기 전에 명시 적으로 패키지를 추가했다 수단 JSON.NET 포함되지 않습니다
파나지오티스 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
웹 API가있는 경우 대신 .AddMvc()을 사용할 수도 있습니다 services.AddControllers().AddJsonOptions(...).
Tobias
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.