C# 为什么我的JavaScriptSerializer返回空json对象?

C# 为什么我的JavaScriptSerializer返回空json对象?,c#,json,C#,Json,我有一个数据点列表,定义如下: 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; } } 在我的代

我有一个数据点列表,定义如下:

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);
List points=populatedList;
JavaScriptSerializer JavaScriptSerializer=新的JavaScriptSerializer();
string text=javaScriptSerializer.Serialize(点);
System.IO.File.writealText(@“C:\Users\Public\WriteText.txt”,text);
然而,当我查看“WriteText.txt”时,我所拥有的只是一堆空括号:
{},{},{}…
我也尝试过只使用一个点来执行此操作,然后只剩下一对匹配的括号。然后我尝试单独序列化字符串对象,效果很好。为什么
JavaScriptSerializer
的行为不符合预期

默认情况下,类成员和结构成员(包括嵌套类和结构)的访问级别是私有的。-

因此,序列化将看不到这些属性。为了序列化它们,需要将它们标记为public。为了让序列化程序读取属性,它们还需要一个公共getter

public string Rate { get; set; }
public string Date { get; set; }
public string Number { get; set; }

你可能是想序列化
而不是
序列化
?是的,我错了,实际的代码已经将JsonSerialization作为一种单独的方法我才开始使用C#最近,我习惯了Java,我已经习惯了私有访问修饰符和公共getter/setter。似乎C#喜欢类变量的公共访问修饰符;有什么原因吗?@mike-不一定是这样,你可以用
public{get;}
来代替。至于房地产风险敞口的设计决策,我认为语言是不可知的。虽然我同意,但官方文档提供的某一语言的示例似乎确实促进了某些趋势…@mike-这基本上是一个简单示例的结果。其中大多数都是赤裸裸的示例,只包含将要使用的属性,因此必须公开这些属性。此外,使用ORM显示的任何示例都将使用公共getter和setter属性,以便简化数据库持久性。如果你想知道一个具体的例子,并且想知道为什么有一个你认为应该是私有的公共财产,请随意链接它