【发布时间】:2014-03-17 21:31:44
【问题描述】:
我正在尝试将父母和不同孩子的混合反序列化为List<parent>。不幸的是,我孩子的所有额外字段都被丢弃并被序列化为父母。
我一直试图弄清楚如何将对象作为一个整体命名,以将它们链接到正确的子类。我没有任何结果。
这些是我尝试序列化对象的简单父子类:
[JsonObject(MemberSerialization.OptIn)]
class Product
{
[JsonProperty]
public string Name { get; set; }
[JsonProperty]
public int Amount { get; set; }
[JsonProperty]
public int Value { get; set; }
}
[JsonObject(MemberSerialization.OptIn)]
class ProductType : Product
{
[JsonProperty(Order = 4)]
public int Volume { get; set; }
}
序列化不是问题,卷被添加为“特殊产品”对象的最终字段。目标是拥有多个孩子。在序列化列表中创建的 2 个对象的代码下方。它无法反序列化,因为它将两个对象作为普通产品放回列表中:
Product test1 = new Product { Name = "Simple Product", Amount = 110, Value = 10 };
ProductType test2 = new ProductType { Name= "Special Type", Amount = 230, Value = 22, Volume = 6 };
List<Product> ProductList = new List<Product>() { test1, test2 };
string output = JsonConvert.SerializeObject(ProductList, Formatting.Indented); //Works correctly.
List<Product> DeSerialized = JsonConvert.DeserializeObject<List<Product>>(output); //Fails creating child object.
【问题讨论】:
标签: c# json serialization json.net