簡體   English   中英

JsonConvert.SerializeObject 將子級轉換為父級仍然返回父級屬性

[英]JsonConvert.SerializeObject with casted child to parent still returns parent properties

有點類似的問題,但答案在這里沒有意義

public static void Main(string[] args)
{
   var myObject = new ChildClass()
   {
     P1 = "p1",
     P2 = "P2",
   };
   var data = (ParentClass)myObject;
   var jsonData = Newtonsoft.Json.JsonConvert.SerializeObject(data);

   Console.WriteLine(jsonData);
}

class ParentClass
{
  public string P1 { get; set; }
}

class ChildClass : ParentClass
{
  public string P3 { get; set; }
}  

會回來

{"P2":"P2","P1":"p1"}

在基類或子類上使用 JsonIgnore 沒有意義,因為我喜歡該過程在所有其他正常情況下正常工作。

如果要使用默認序列化程序序列化父類,則需要創建一個父類:

var myObject = new ParentClass()
{
  P1 = "p1"
};

您不能通過將對象強制轉換為父對象來關閉多態性/忽略對象是子對象。 ,也許看看映射器是否可以為您將您的孩子映射到父級(或者去掉只復制父級上存在的那些屬性的無聊樣板)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM