Data types with polymorphic sub -objects with JSON.NET serialization and desertileization
Use the $ Type field
to add a TypeNameHandling.Auto
field to JSON to indicate the type of the sub -object. However, this will introduce an unnecessary field. $type
attribute to indicate the sub -type. However, this requires the container class to include sub -object instances in order to access the $type
attribute during serialization. Type
Type
The sub -type attributes in the base class
JsonConverter
Custom sub -type converter Type
code implementation
ReadJson
The following prototype implementation explains this method: CanConvert
fields, and provides a flexible solution for serialized polymer objects.
<code class="language-json">// JSON,枚举序列化为名称 {"AaaField":"test","Type":"Type1"}</code>
<code class="language-csharp">// 包含 Type 属性的基类 public class SubTypeClassBase { [JsonConverter(typeof(StringEnumConverter))] public SubType Type { get; set; } } // 具有特定字段的子类 public class SubTypeClass1 : SubTypeClassBase { public string AaaField { get; set; } } public class SubTypeClass2 : SubTypeClassBase { public string ZzzField { get; set; } } // 自定义转换器 public class SubTypeClassConverter : JsonConverter { // ... (实现如答案中所述) ... }</code>
The above is the detailed content of How Can I Serialize and Deserialize Polymorphic Child Objects in JSON.NET Without a '$type' Field?. For more information, please follow other related articles on the PHP Chinese website!