JSON 역직렬화 중 알 수 없는 열거형 값 무시
JSON 데이터를 열거형으로 역직렬화할 때 JSON 속성에 다음이 포함된 상황이 발생할 수 있습니다. 기존 열거형 값과 일치하지 않는 값입니다. 기본적으로 이로 인해 오류가 발생할 수 있습니다.
TolerantEnumConverter를 Rescue로
이를 적절하게 처리하려면 TolerantEnumConverter라는 사용자 정의 JsonConverter를 사용할 수 있습니다. 이 변환기는 일련의 규칙을 정의하여 알 수 없는 열거형 값을 처리하는 유연한 접근 방식을 제공합니다.
구현 세부 정보
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!