【发布时间】:2015-11-17 04:32:22
【问题描述】:
我正在使用 Newtonsoft JSON 序列化程序,如果类是从列表派生的,则序列化字符串缺少派生类的属性。这是我的示例代码。
类:
[DataContract]
public class TestItem
{
[DataMember]
public int itemInt;
[DataMember]
public string itemString;
public TestItem() {}
public TestItem(int _intVal, string _stringVal)
{
itemInt = _intVal;
itemString = _stringVal;
}
}
[DataContract]
public class TestMain : List<TestItem>
{
[DataMember]
public int mainInt;
[DataMember]
public string mainString;
}
序列化代码:
string test;
// Test classes
TestMain main = new TestMain();
main.mainInt = 123;
main.mainString = "Hello";
main.Add(new TestItem(1, "First"));
test = Newtonsoft.Json.JsonConvert.SerializeObject(main);
序列化后test的值为:
[{\"itemInt\":1,\"itemString\":\"First\"}]
mainInt 和 mainString 的值完全丢失。
[DataContract] 和 [DataMember] 标签不会改变行为,但我将它们放在其中,以抢占它们丢失的答案。
如何让 JSON 识别和序列化派生类的 mainInt 和 mainString 属性?
【问题讨论】: