JSON 데이터를 처리할 때 알려진 필드와 알려지지 않은 필드가 모두 있는 상황에 자주 직면하게 됩니다. 알려진 필드는 클래스의 특정 속성에 매핑될 수 있지만 알 수 없는 필드는 데이터 손실을 방지하기 위해 특별한 처리가 필요합니다.
알 수 없는 필드를 관리하는 한 가지 방법은 JSON .NET에서 사용자 정의 계약 파서를 활용하는 것입니다. 그러나 이를 달성하는 것은 어려울 수 있습니다.
DataContract 직렬 변환기는 역직렬화 재정의를 허용하지 않으므로 이 경우에는 적합하지 않습니다.
동적 객체에 대한 직렬화 및 역직렬화는 해결책을 제공할 수 있지만 이는 지루한 프로세스이며 사후 처리가 필요합니다.
DynamicObject 클래스에서 상속해도 문제가 해결되지 않습니다. 왜냐하면 직렬 변환기는 리플렉션에 의존하고 동적 개체에 대한 사용자 지정 메서드를 호출하지 않기 때문입니다.
복잡한 기술을 사용하는 대신 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!