> 백엔드 개발 > C++ > JSON을 역직렬화할 때 알 수 없는 열거형 값을 어떻게 처리할 수 있나요?

JSON을 역직렬화할 때 알 수 없는 열거형 값을 어떻게 처리할 수 있나요?

Barbara Streisand
풀어 주다: 2024-12-31 10:16:14
원래의
191명이 탐색했습니다.

How Can I Handle Unknown Enum Values When Deserializing JSON?

알 수 없는 열거형 값으로 JSON 역직렬화

JSON 데이터를 구문 분석할 때 제공된 열거형 값이 코드베이스에 정의된 값과 일치하지 않는 시나리오를 처리하는 것이 중요합니다. 이는 일반적으로 타사 API가 시간이 지남에 따라 새로운 열거형 값을 도입할 때 발생합니다.

해결책: 사용자 정의 JsonConverter

이 문제를 해결하려면 사용자 정의 JsonConverter를 생성할 수 있습니다.

class TolerantEnumConverter : JsonConverter
{
    // ... Implementation ...
}
로그인 후 복사

이 변환기는 다음을 통해 역직렬화 프로세스를 단순화합니다. 논리:

  • JSON 값이 기존 열거형 값(문자열 또는 정수)과 일치하는 경우 해당 값을 할당합니다.
  • null 허용 열거형의 경우 값이 null인 경우 null을 반환합니다. 누락되었습니다.
  • 열거형에 "알 수 없음" 값이 포함되어 있으면 다음과 같이 설정됩니다. value.
  • 그렇지 않으면 첫 번째 열거형 값을 사용합니다.

샘플 사용법:

[JsonConverter(typeof(TolerantEnumConverter))]
enum Status { Ready, Set, Go }

string json = @"{ ""status"": ""SomethingElse"" }";

var status = JsonConvert.DeserializeObject<Status>(json); // Returns "Ready"
로그인 후 복사

Nullable Enums 및 "알려지지 않은" 값:

알 수 없는 값이 있는 null 허용 열거형을 처리하려면 열거형 정의에 "알 수 없음" 값을 추가하면 됩니다. 예:

[JsonConverter(typeof(TolerantEnumConverter))]
enum Color { Red, Yellow, Green, Unknown = 99 }

string colorJson = @"{ ""color"": ""Purple"" }";

var color = JsonConvert.DeserializeObject<Color?>(colorJson); // Returns null
로그인 후 복사

결론:

여기에 제시된 사용자 정의 JsonConverter를 활용하면 시간이 지남에 따라 열거형 값이 변경되더라도 JSON 역직렬화가 원활하게 진행되도록 할 수 있습니다. 오류를 방지하고 데이터 무결성을 유지합니다.

위 내용은 JSON을 역직렬화할 때 알 수 없는 열거형 값을 어떻게 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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