[英]Serialize object when the object inherits from list
[DataContract]
public class A : List<B>
{
[DataMember]
public double TestA { get; set; }
}
[DataContract]
public class B
{
[DataMember]
public double TestB { get; set; }
}
使用上面的模型,我嘗試序列化以下對象:
List<A> list = new List<A>()
{
new A() { TestA = 1 },
new A() { TestA = 3 }
};
json = JsonConvert.SerializeObject(list);
//json: [[],[]]
TestA
中我的兩個值在TestA
? 這可能是從這個線程 (XML)重復,但我想知道是否沒有選項通過設置一些JSON序列化選項來包含這些值?
注意:在A
類中創建屬性List<B>
而不是繼承對我來說是沒有選擇的。
根據上面的評論(謝謝!)有兩種方法可以獲得正確的結果:
無論如何,從List<T>
繼承很少是一個很好的解決方案( 見這里 )
我已經嘗試過workarround:
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
public class A : List<B>
{
[JsonProperty]
public double TestA { get; set; }
[JsonProperty]
public B[] Items
{
get
{
return this.ToArray();
}
set
{
if (value != null)
this.AddRange(value);
}
}
}
public class B
{
public double TestB { get; set; }
}
這適用於序列化和反序列化。 要點: Items
必須是B
的Array
且沒有List<B>
。 否則反序列化不適用於Items
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.