> 백엔드 개발 > C++ > .NET에서 역직렬화하는 동안 알려지거나 알려지지 않은 JSON 필드를 어떻게 처리할 수 있습니까?

.NET에서 역직렬화하는 동안 알려지거나 알려지지 않은 JSON 필드를 어떻게 처리할 수 있습니까?

DDD
풀어 주다: 2025-01-18 09:02:09
원래의
566명이 탐색했습니다.

How Can I Handle Known and Unknown JSON Fields During Deserialization in .NET?

.NET 역직렬화에서 알려진 JSON 필드 및 알 수 없는 필드 처리

JSON 데이터를 처리할 때 알려진 필드와 알려지지 않은 필드가 모두 있는 상황에 자주 직면하게 됩니다. 알려진 필드는 클래스의 특정 속성에 매핑될 수 있지만 알 수 없는 필드는 데이터 손실을 방지하기 위해 특별한 처리가 필요합니다.

JSON .NET용 사용자 정의 계약 파서 사용

알 수 없는 필드를 관리하는 한 가지 방법은 JSON .NET에서 사용자 정의 계약 파서를 활용하는 것입니다. 그러나 이를 달성하는 것은 어려울 수 있습니다.

DataContract 직렬 변환기의 한계

DataContract 직렬 변환기는 역직렬화 재정의를 허용하지 않으므로 이 경우에는 적합하지 않습니다.

동적 객체와 직렬화

동적 객체에 대한 직렬화 및 역직렬화는 해결책을 제공할 수 있지만 이는 지루한 프로세스이며 사후 처리가 필요합니다.

동적 객체 상속

DynamicObject 클래스에서 상속해도 문제가 해결되지 않습니다. 왜냐하면 직렬 변환기는 리플렉션에 의존하고 동적 개체에 대한 사용자 지정 메서드를 호출하지 않기 때문입니다.

더 간단한 솔루션: JsonExtensionDataAttribute

복잡한 기술을 사용하는 대신 JSON .NET(버전 5.0 이상)의 JsonExtensionDataAttribute을 고려하세요. 이 속성을 사용하면 알 수 없는 필드를 IDictionary<string, JToken> 유형의 속성에 익명으로 저장할 수 있습니다.

<code class="language-csharp">public class Product
{
    public string id { get; set; }
    public string name { get; set; }
    [JsonExtensionData]
    public Dictionary<string, JToken> UnknownFields { get; set; }
}</code>
로그인 후 복사

이 접근 방식을 사용하면 JSON 데이터가 성공적으로 역직렬화되고 알려진 필드와 알려지지 않은 필드가 클래스 인스턴스를 통해 액세스될 수 있습니다.

위 내용은 .NET에서 역직렬화하는 동안 알려지거나 알려지지 않은 JSON 필드를 어떻게 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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