JSON.Net序列化派生类的所有属性

时间:2014-11-20 06:44:12

标签: c# serialization json.net

我有几个派生自基类的类。基类属性具有[DataMember]属性,但派生类属性没有它。当我在子类对象上使用JsonConvert.SerializeObject()时,我只看到基类中的属性被序列化,除非我将[DataMember]添加到派生类的属性中。如何通过忽略[DataMember]属性使SerializeObject()序列化派生类的所有属性,包括在基类中定义的属性?我想避免将[DataMember]添加到派生类的所有属性。

1 个答案:

答案 0 :(得分:-1)

如果没有发布任何实际代码,很难指出问题的根源。也许您可以删除任何de /序列化属性,例如[DataMember()][JsonProperty()],并再试一次,因为

public abstract class Base
{
    public abstract string BaseProp { get; }
}

public class MyBase : Base
{
    public override string BaseProp { get { return "propA"; } }
    public string MyBaseProp { get; set; }
}

public class My : MyBase
{
    public string MyProp { get; set; }
}

然后序列化给定的类实例

var myBase = new MyBase { MyBaseProp = "prop1" };
Console.WriteLine(JsonConvert.SerializeObject(myBase));

var my = new My { MyBaseProp = "prop1", MyProp = "prop2" };
Console.WriteLine(JsonConvert.SerializeObject(my));

为您提供以下输出

{"BaseProp":"propA","MyBaseProp":"prop1"}
{"MyProp":"prop2","BaseProp":"propA","MyBaseProp":"prop1"}