> 백엔드 개발 > C++ > JSON 역직렬화 중에 알 수 없는 열거형 값을 적절하게 처리하는 방법은 무엇입니까?

JSON 역직렬화 중에 알 수 없는 열거형 값을 적절하게 처리하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-01 11:02:09
원래의
716명이 탐색했습니다.

How to Gracefully Handle Unknown Enum Values During JSON Deserialization?

JSON 역직렬화 중 알 수 없는 열거형 값 무시

JSON 데이터를 열거형으로 역직렬화할 때 JSON 속성에 다음이 포함된 상황이 발생할 수 있습니다. 기존 열거형 값과 일치하지 않는 값입니다. 기본적으로 이로 인해 오류가 발생할 수 있습니다.

TolerantEnumConverter를 Rescue로

이를 적절하게 처리하려면 TolerantEnumConverter라는 사용자 정의 JsonConverter를 사용할 수 있습니다. 이 변환기는 일련의 규칙을 정의하여 알 수 없는 열거형 값을 처리하는 유연한 접근 방식을 제공합니다.

  1. JSON 값이 기존 열거형 값과 일치하면 해당 값이 사용됩니다.
  2. 열거형이 다음과 같은 경우 null을 허용하고 JSON 값이 null이면 null로 설정됩니다.
  3. 열거에 "알 수 없음"이라는 값이 있는 경우 사용됩니다.
  4. 그렇지 않으면 열거형의 첫 번째 값이 사용됩니다.

구현 세부 정보

TolerantEnumConverter는 문자열 값과 정수 값을 모두 처리합니다. JSON에서. 대소문자를 구분하지 않는 문자열 비교 또는 열거형 값 집합의 존재 여부를 기준으로 일치 항목을 확인합니다.

사용 예

TolerantEnumConverter를 사용하려면 다음과 같이 열거형 속성에 주석을 답니다. [JsonConverter(typeof(TolerantEnumConverter))] 속성. 예는 다음과 같습니다.

[JsonConverter(typeof(TolerantEnumConverter))]
enum Status
{
    Ready = 1,
    Set = 2,
    Go = 3,
}
로그인 후 복사

데모 애플리케이션

다음 데모 애플리케이션은 TolerantEnumConverter를 사용하여 Null이 허용되지 않는 것과 Null 허용이 모두 처리되는 방법을 보여줍니다. 열거형:

// Sample JSON data
string json = @"
{
    ""NonNullableStatusWithValidStringValue"" : ""Set"",
    ""NonNullableStatusWithInvalidStringValue"" : ""Blah"",
    ""NullableStatusWithValidStringValue"" : ""Go"",
    ""NullableStatusWithInvalidStringValue"" : ""Blah"",
}";

// Deserialize JSON data into Foo object
Foo foo = JsonConvert.DeserializeObject<Foo>(json, new JsonSerializerSettings
{
    Converters = { new TolerantEnumConverter() }
});

// Output the deserialized values
foreach (PropertyInfo prop in typeof(Foo).GetProperties())
{
    Console.WriteLine(prop.Name + ": " + (prop.GetValue(foo) ?? "(null)"));
}
로그인 후 복사

출력:

NonNullableStatusWithValidStringValue: Set
NonNullableStatusWithInvalidStringValue: Ready
NullableStatusWithValidStringValue: Go
NullableStatusWithInvalidStringValue: (null)
로그인 후 복사

결론

TolerantEnumConverter는 오류 없이 JSON 데이터를 열거형으로 역직렬화하는 편리한 방법을 제공합니다. 알 수 없는 값의 경우. 특정 요구 사항에 맞게 사용자 정의 가능한 동작을 제공합니다.

위 내용은 JSON 역직렬화 중에 알 수 없는 열거형 값을 적절하게 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿