Json.net如何序列化或反序列化所有属性,甚至包括非[DataMember]?

时间:2015-09-06 15:05:45

标签: c# .net json.net

我正在使用Json.net(Newtonsoft.Json)来序列化或反序列化某些类。

有我的班级

[DataContract]
Public class Person
{
   [DataMember]
   public string ID { get; set; }
}

public class Student : Person
{
   public string StudentName { get; set;}
}

现在我想序列化学生,但看起来像 Json.net只序列化或反序列化DataContract类和DataMember属性。它总是忽略我的StudentName属性,但我需要它包含在。

有没有办法解决这个问题?谢谢。

2 个答案:

答案 0 :(得分:0)

根据official site,您只需将[DataMember]属性添加到StudentName即可在json字符串中包含此属性。

答案 1 :(得分:0)

如果您需要添加StudentName属性,只需在此属性中添加[DataMember]属性。

但是,另一种更简单的方法是完全删除[DataContract][DataMember],因为Newtonsfot.Json并不真正需要它们来确定要包含哪些属性。

public class Person
{
    public string ID { get; set; }
}

public class Student : Person
{
   public string StudentName { get; set;}
}

// ...

Student student = new Student() { ID = "1", StudentName = "John" };
string resultJson = Newtonsoft.Json.JsonConvert.SerializeObject(student);