2011-05-17 42 views
0

我有我想要序列化到Json的以下类。目前我得到这样的事情C#JsonSerialize没有成员名

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; 
      } 
     } 

    } 

回答

1

有没有你不使用json.NET一个特别的原因?它已经解决了C#开发人员的序列化问题,并且几乎没有理由不使用它。我与它有关的唯一问题与它在JSON反序列化中使用接口对象的灵活性有关,但除非你在这个类上进行单元测试,这不应该是一个问题(它看起来不像你)。

为了您的目的,json.NET应该为您提供您正在寻找的输出,不要在你自己的系列化器上滚动串口。

编辑:另外,为了清楚起见,json.NET确实支持没有成员名称的序列化方式。只需向每位成员添加一个JsonProperty Attribute即可。

相关问题