我正在使用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);
序列化后,测试值为:
[{\“itemInt \”:1,\“itemString \”:\“First \”}]
mainInt和mainString的值完全缺失 .
[DataContract]和[DataMember]标签不会改变行为,但我在那里有它们,以抢占他们缺少的答案 .
如何让JSON识别和序列化派生类的mainInt和mainString属性?
3 回答
看一下将json attribs放在你的属性上 . 这是一个示例:Json.NET serialize object with root name . 我唯一不愿意做的就是让主要派生自这样的列表 . 它不是推荐的模式和实践 . 添加列表作为另一个子属性而不是从列表派生,json序列化对你的意图感到困惑 .
这是你想要的吗?
添加此attrib对我有用:
使用System.ComponentModel.DataAnnotations;
[Newtonsoft.Json.JsonObject(Title =“root”)] public class Testmain:List