C# JsonSerialize 没有成员名称
本文关键字:成员 JsonSerialize | 更新日期: 2023-09-27 17:56:36
我有以下类,我喜欢序列化为 Json。我目前得到这样的东西
var pgdata = {"SeriesList":[{"label":"Fund","data":[{"Year":2000,"RateOfReturn":0.02},{"Year":2009,"RateOfReturn":0.03}]},{"label":"Benchmark","data":[{"Year":2000,"RateOfReturn":0.024},{"Year":2009,"RateOfReturn":0.032}]}]} ;
我喜欢得到这样的东西
var pgdata = {"SeriesList":[{"label":"Fund","data":[[2000,0.02],[2009,0.03]]},{"label":"Benchmark","data":[[2000,0.024],[2009,0.032]]}]} ;
C# 代码:
public class JsonPerformGraphData
{
public List<Series> SeriesList = new List<Series>();
public Series GetSeries(string name)
{
foreach (Series s in SeriesList)
{
if (s.label == name)
return s;
}
Series series = new Series(name);
SeriesList.Add(series);
return series;
}
public void Add(PerformanceGraphItem ppgi)
{
Series s = GetSeries(ppgi.PerformanceGraphSeries.Name);
s.addItem(ppgi.Year, ppgi.RateOfReturn);
}
public class Series
{
public string label;
public List<Data> data = new List<Data>();
public Series(String name)
{
label = name;
}
public void addItem(short year, double rateOfReturn)
{
data.Add(new Data(year,rateOfReturn));
}
}
public class Data
{
public short Year;
public double RateOfReturn;
public Data(short year, double rateOfReturn)
{
Year = year;
RateOfReturn = rateOfReturn;
}
}
}
您不使用 json.NET 有什么特殊原因吗? 它已经解决了 C# 开发人员的序列化问题,并且很少有理由不使用它。 我遇到的唯一问题与它在从 JSON 反序列化中使用接口对象的不灵活性有关,但除非您对此类进行单元测试,否则这应该不是问题(而且看起来不像您)。
出于您的目的,json.NET 应该为您提供所需的输出,而无需自己滚动序列化程序。
编辑:另外,为了清楚起见,json.NET 确实支持按照您想要的方式在没有成员名称的情况下进行序列化。 只需向每个成员添加一个 JsonProperty 属性即可。