我有一个数据点列表,定义如下:
public class Point {
string Rate;
string Date;
string Number;
public Point(string Rate, string Date, string Number)
{
this.Rate = Rate;
this.Date = Date;
this.Number = Number;
}
}
然后在我的代码中我有:
List<Point> points = populatedList;
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
string text = javaScriptSerializer.Serialize(points);
System.IO.File.WriteAllText(@"C:\Users\Public\WriteText.txt", text);
然而,当我去查看“WriteText.txt”时,我所拥有的只是一堆空括号:{}, {}, {} ...
我也尝试过只用一点,然后我只留下一个匹配一对括号。然后我尝试单独序列化一个字符串对象,并且运行正常。为什么JavaScriptSerializer
的行为不符合预期?
答案 0 :(得分:16)
默认情况下,类成员和结构成员(包括嵌套类和结构)的访问级别是私有的。 - Access ModifiersMSDN
因此,序列化将不会看到这些属性。为了将它们序列化,需要将它们标记为公共。他们还需要有一个公共getter才能让序列化程序读取属性。
public string Rate { get; set; }
public string Date { get; set; }
public string Number { get; set; }