Json.NET - 如何序列化对象的多态属性

时间:2016-10-11 22:56:54

标签: c# json json.net

我有以下类(名称和属性名称已更改):

[KnownType(typeof(Module))]
[DataContract]
public class BaseModule
{
    [DataMember]
    public int Id { get; set; }
}

[DataContract]
public class Module : BaseModule
{
    [DataMember]
    public string Name { get; set; }
}

[DataContract]
public class ModuleContainer
{
    [DataMember]
    public ModuleBase mod { get; set; }
}

所以,使用时:

var json = @"{\"mod\":{
    \"Name\":\"The Name\",
    \"Id\":10
}}";

var result = JsonConvert.DeserializeObject<ModuleContainer>(json);

由此产生的对象&#34; mod&#34;成员无法成功转换为类型模块,并且再次序列化该对象不会产生&#34;名称&#34;会员。似乎Json.Net无法识别继承的类型(Module),而是给了我一个&#34; ModuleBase&#34;对象

我有相当多的继承类(都是不同的,并且都被ModuleBase上的KnownType所涵盖)。有没有办法让我说服JsonConvert获取合适的类型?

如果您需要更多信息或者令人困惑,请告诉我。

0 个答案:

没有答案