使用Json.NET序列化对象的意外结果

时间:2019-07-20 06:03:35

标签: json inheritance serialization json.net extension-methods

我写了一个扩展方法,使用JSON将对象序列化为Json.NET

public static string ToJson(this object value)
{
   if (value == null)
   {
      return string.Empty;
   }
   var settings = new JsonSerializerSettings
   {
      ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
   };
   return JsonConvert.SerializeObject(value, Formatting.Indented, settings);
}

我有以下课程

[Serializable]
[DataContract]
public class BaseEntity 
{
    [DataMember] 
    public int Id { get; set; }
}

[Serializable]
public class MyEntity: BaseEntity 
{
    public string Name { get; set; }
}

当我运行以下代码时

var myEntity = new MyEntity{
                  Id = 1,
                  Name = "test"  
                  };
Console.WriteLine(myEntity.ToJson());

输出为

  

{     “编号”:1     }

但我希望

  

{

     

“ Id”:1

     

“名称”:“ test”

     

}

当我评论[DataContract][DataMember]属性时,结果是预期的,但是有了这些属性,问题出在哪里?

0 个答案:

没有答案