JSON이 다형성 유형의 객체 목록을 나타낸다고 가정합니다.
<code>[ { "$id": "1", "$type": "MyAssembly.ClassA, MyAssembly", "Email": "[email protected]" }, { "$id": "2", "$type": "MyAssembly.ClassB, MyAssembly", "Email": "[email protected]" } ]</code>
및 추상 기본 및 파생 클래스:
<code>public abstract class BaseClass { public string Email; } public class ClassA : BaseClass { } public class ClassB : BaseClass { }</code>
JSON을 IEnumerable로 역직렬화하려면 다음 단계를 따르세요.
TypeNameHandling 활성화: 역직렬화된 JSON에 유형 정보를 포함하려면 JsonSerializerSettings의 TypeNameHandling을 All로 설정합니다.
<code> JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };</code>
직렬화된 JSON: 구성된 설정을 사용하여 개체 목록을 직렬화합니다.
<code> string strJson = JsonConvert.SerializeObject(instance, settings);</code>
수정된 JSON: 직렬화된 JSON에는 $type 정보가 포함되며 생성된 JSON은 다음과 같습니다.
<code> { "$type": "System.Collections.Generic.List`1[[MyAssembly.BaseClass, MyAssembly]], mscorlib", "$values": [ { "$id": "1", "$type": "MyAssembly.ClassA, MyAssembly", "Email": "[email protected]" }, { "$id": "2", "$type": "MyAssembly.ClassB, MyAssembly", "Email": "[email protected]" } ] }</code>
JSON 역직렬화: TypeNameHandling이 활성화된 설정을 사용하여 수정된 JSON을 기본 클래스로 역직렬화합니다.
<code> IEnumerable<BaseClass> obj = JsonConvert.DeserializeObject<IEnumerable<BaseClass>>(strJson, settings);</code>
이러한 단계를 수행하면 다형성 유형의 객체를 포함하여 JSON을 IEnumerable
위 내용은 Newtonsoft JSON.NET을 사용하여 JSON을 'IEnumerable'로 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!