创建一个包含多个列表的列表

时间:2013-12-10 13:28:05

标签: c# json list .net-3.5 highcharts

以下是我的主要清单

var serie_line = new { name = series_name, data = new List<object>() };

这里我在数据中添加项目如下,

serie_line.data.Add(child_object_name); 
serie_line.data.Add(period_final_value );

然后我将此var serie_line添加到另一个列表系列中,如下所示,

List<object> series = new List<object>(); 
series.Add(serie_line);

最后,我将这个系列序列化为JSON,如下所示,

var obj4 = new { legend = legend, title,chart, series};
JSON_File_Returned = jSearializer.Serialize(obj4);

System.Web.Script.Serialization.JavaScriptSerializer jSearializer = new System.Web.Script.Serialization.JavaScriptSerializer();

现在我得到的输出如下,

 {
    "legend":{"enabled":"true"},
    "title":{"text":"Financial"},
    "chart":{"type":"pie"},
    "series":[
               {"name":"Actual","data":["Market Share",20.00]},
               {"name":"Actual","data":["Sales Growth",30.00]},
               {"name":"Actual","data":["Operating Profit",40.00]},
               {"name":"Actual","data":["Gross Margin %",10.00]}
             ]
  }

但我的所需输出如下,

 {
    "legend":{"enabled":"true"},
    "title":{"text":"Financial"},
    "chart":{"type":"pie"},
    "series":[
               {"name":"Actual","data":[["Market Share",20.00],["Sales Growth",30.00],["Operating Profit",40.00],["Gross Margin %",10.00]]}
             ]
  }

那么......我可以使用这个JSON输出在高图中绘制饼图...我已经尝试过所有的东西,比如使用字典,制作不同的类然后使用它的对象等等......但是无法做到出....

下面是我的整个代码......如果万一我搞乱任何循环而且我不认识它,但任何人都可能会注意到它..请检查以下代码是否相同..

    var serie_line = new { name = series_name, data = new List<object>() };  

    for (int k = 0; k <= read_Series_Splitted_Name.Length; k++)                                 //for loop for passing chart type in series
        {
            for (int i = 0; i < id_series_before_offset.Count; i++)                                 //for loop for counting series ID
            {
                var xmlAttributeCollection = id_series_before_offset[i].Attributes;
                 if (xmlAttributeCollection != null)
                 {
                    var seriesid = xmlAttributeCollection["id"];
                    xmlActions_id[i] = seriesid.Value;
                    resulted_series_id = seriesid.Value;
                    series_name = Client.GetAttributeAsString(sessionId, resulted_series_id, "name", "");
                    new_series_name = series_name;
                            series_Atribute = Client.GetAttributeAsString(sessionId, resulted_series_id, "symbol", "");
                    if (read_Series_Splitted_Name_store == series_Atribute)
                    {
                       serie_line = new { name = series_name, data = new List<object>() };
                     }

                     k++;
                            //  Forloop for PeriodId and It's Value

                    var value = Read_XML_Before_Offset.SelectNodes("//measure.values/series[" + (i + 1) + "]/value");
                    var xmlActions = new string[value.Count];// for periodname
                    var xmlActionsone = new string[value.Count];  // for period value

                    for (int j = 0; j < value.Count; j++)
                    {

                    var xmlAttributeCollection_for_period = value[j].Attributes;
                     if (xmlAttributeCollection_for_period != null)
                    {

                      if (i == 0 && a == 0)
                      {
                          var periodid = xmlAttributeCollection_for_period["periodid"];
                          xmlActions[j] = periodid.Value;
                          period_final_id = periodid.Value;
                          period_name = Client.GetAttributeAsString(sessionId, periodid.Value, "name", "");
                          period_Name.Add(period_name);
                      }

                      try
                      {
                            var action = xmlAttributeCollection_for_period["value"];  //    xmlActionsone[j] = action.Value;
                            period_final_value = float.Parse(action.Value);
                                            // serie_line.data.Add(period_final_value);
                             serie_line.data.Add(child_object_name);
                             serie_line.data.Add(period_final_value );


                       }
                         catch (Exception ex1)
                       {
                             serie_line.data.Add("");
                             serie_line.data.Add( null );
                       }
                     }
                   }
                }
              }         
            }
           series.Add(serie_line);

1 个答案:

答案 0 :(得分:3)

你的C#代码看起来应该是这样的:

var serie_line = new { name = "Actual", data = new List<object>() };
serie_line.data.Add(new List<object>() {"Market Share", 20.0});
serie_line.data.Add(new List<object>() {"Sales Growth", 30.0});
serie_line.data.Add(new List<object>() {"Operting Profit", 40.0});
serie_line.data.Add(new List<object>() {"Gross Margin %", 10.0});
jSearializer.Serialize(serie_line);

产生:

    {"name":"Actual","data":[["Market Share",20],["Sales Growth",30],["Operting Profit",40],["Gross Margin %",10]]}

我没有关注代码的底部部分(如何创建child_object_nameperiod_final_value,但我认为您想要:

    serie_line.data.Add(new List<object>() {child_object_name, period_final_value });

而不是:

    serie_line.data.Add(child_object_name);
    serie_line.data.Add(period_final_value );
相关问题