> 백엔드 개발 > C++ > Newtonsoft.Json.NET을 사용하여 JSON을 IEnumerable로 역직렬화하는 방법은 무엇입니까?

Newtonsoft.Json.NET을 사용하여 JSON을 IEnumerable로 역직렬화하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2025-01-17 13:41:10
원래의
555명이 탐색했습니다.

How to Deserialize JSON into an IEnumerable using Newtonsoft.Json.NET?

Newtonsoft.Json.NET을 사용하여 JSON을 IEnumerable 컬렉션으로 역직렬화

도전:

복잡한 JSON 데이터를 IEnumerable<BaseType>이 추상적인 BaseType으로 역직렬화하는 것은 어렵습니다. 표준 JsonConvert.DeserializeObject()은 추상 기본 유형으로 인해 실패합니다.

해상도:

해결책에는 JsonSerializerSettings 및 해당 TypeNameHandling 속성을 ​​활용하는 것이 포함됩니다. TypeNameHandlingAll으로 설정하면 직렬화된 JSON에 $type 필드가 포함되어 역직렬화에 중요한 유형 정보가 보존됩니다.

구현 단계:

  1. 직렬화 구성: JsonSerializerSettings 객체를 생성하고 TypeNameHandlingAll으로 설정합니다.
<code class="language-csharp">JsonSerializerSettings settings = new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.All
};</code>
로그인 후 복사
  1. 유형 정보로 직렬화: 구성된 설정을 사용하여 개체를 직렬화합니다. 그러면 필요한 $type 필드가 JSON 문자열에 추가됩니다.
<code class="language-csharp">string strJson = JsonConvert.SerializeObject(instance, settings);</code>
로그인 후 복사

결과 JSON은 다음과 유사합니다($type 필드 참고).

<code class="language-json">{
  "$type": "System.Collections.Generic.List`1[[MyAssembly.BaseClass, MyAssembly]], mscorlib",
  "$values": [
    {
      "$id": "1",
      "$type": "MyAssembly.ClassA, MyAssembly",
      "Email": "[email'\u00a0protected]"
    },
    {
      "$id": "2",
      "$type": "MyAssembly.ClassB, MyAssembly",
      "Email": "[email'\u00a0protected]"
    }
  ]
}</code>
로그인 후 복사
  1. 유형 정보를 사용하여 역직렬화: 동일한 IEnumerable<BaseType> 개체를 사용하여 JSON 문자열을 다시 settings으로 역직렬화합니다.
<code class="language-csharp">IEnumerable<BaseType> deserialized = JsonConvert.DeserializeObject<IEnumerable<BaseType>>(strJson, settings);</code>
로그인 후 복사

관련 문서:

위 내용은 Newtonsoft.Json.NET을 사용하여 JSON을 IEnumerable로 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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