我正在使用DataContractJsonSerializer並且DataMember名稱存在問題。序列化DataMember(名稱)覆蓋問題
我做了一個基類和幾個派生類。我需要派生類,因爲我有不同的JSON字符串。我想反序列化json字符串,因此需要數據成員的不同名稱。我試圖改變數據成員名稱,如下面的例子:
基類:
[DataContract]
public abstract class BaseClass
{
[DataMember]
public virtual string FirstMethod { get; protected set; }
}
派生類:
[DataContract]
[KnownType(typeof(BaseAccess))]
public class DerivedClass
{
[DataMember(Name="first_method")]
public virtual string FirstMethod { get; protected set; }
}
問題是,當我用一個派生類的序列化似乎忽略給定的DataMember名稱。所以當我使用類型DerivedClass反序列化時,序列化似乎是以名稱「FirstMethod」(基類的名稱)而不是「first_method」(派生類的名稱)進行的。是否可以使用派生類的DataMember名稱(在我的情況下,這對於多個派生類而言是不同的)。
另一個問題。我發現在基類中添加了KnownType的示例,並將其添加到派生類中。似乎邏輯對我來說是在派生類上做的(特別是對於繼承問題)。什麼是正確的?
請注意,爲避免在json中創建兩個字段,您需要從基類中的屬性中刪除[DataMember]屬性。 –