>백엔드 개발 >C++ >JSON .NET의 ExtensionDataAttribute를 사용하여 알 수 없는 필드가 있는 JSON을 역직렬화하려면 어떻게 해야 합니까?

JSON .NET의 ExtensionDataAttribute를 사용하여 알 수 없는 필드가 있는 JSON을 역직렬화하려면 어떻게 해야 합니까?

DDD
DDD원래의
2025-01-18 09:21:10761검색

How Can I Deserialize JSON with Unknown Fields Using JSON .NET's ExtensionDataAttribute?

JSON .NET의 ExtensionDataAttribute를 사용하여 알려진 필드와 알려지지 않은 필드가 포함된 JSON 데이터를 역직렬화합니다

JSON 결과에 알려진 필드와 알 수 없는 필드가 포함되어 있고 알 수 없는 필드 이름을 예측할 수 없는 경우 액세스 및 수정을 위해 이러한 알 수 없는 필드를 사전에 매핑해야 합니다. 이를 위해 JSON .NET의 JsonExtensionDataAttribute 속성을 ​​사용할 수 있습니다.

다음 클래스 구조를 고려하세요.

<code class="language-csharp">public class Product
{
    public string id { get; set; }
    public string name { get; set; }

    // 额外字段
    [JsonExtensionData]
    private IDictionary<string, JToken> _extraStuff;
}</code>

JsonExtensionDataAttribute 속성에 _extraStuff을 적용하면 JSON .NET에 알 수 없는 필드를 이 사전에 매핑하도록 지시할 수 있습니다. JToken은 해당 특정 필드에 대한 원시 JSON 데이터를 나타냅니다.

이 클래스를 사용하여 JSON을 역직렬화하는 경우:

<code class="language-json">{
    "id": "7908",
    "name": "product name",
    "unknown_field_1": "some value",
    "unknown_field_2": "some value"
}</code>

Product 객체의 _extraStuff 사전은 다음 키-값 쌍으로 자동으로 채워집니다.

<code class="language-csharp">{
    {"unknown_field_1", "some value"},
    {"unknown_field_2", "some value"}
}</code>

이 접근 방식은 사용자 정의 계약 파서나 동적 개체 상속 없이 알 수 없는 필드를 처리하는 효율적인 방법을 제공합니다.

참고: JsonExtensionDataAttribute 속성은 JSON .NET v5 버전 5 이상에서 사용할 수 있습니다.

위 내용은 JSON .NET의 ExtensionDataAttribute를 사용하여 알 수 없는 필드가 있는 JSON을 역직렬화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.