C# 创建包含多个列表的列表的步骤
下面是我的主要清单C# 创建包含多个列表的列表的步骤,c#,json,list,.net-3.5,highcharts,C#,Json,List,.net 3.5,Highcharts,下面是我的主要清单 var serie_line = new { name = series_name, data = new List<object>() }; 然后我将这个var serie_行添加到另一个列表系列中,如下所示 serie_line.data.Add(child_object_name); serie_line.data.Add(period_final_value ); List<object> series = new List<obj
var serie_line = new { name = series_name, data = new List<object>() };
然后我将这个var serie_行添加到另一个列表系列中,如下所示
serie_line.data.Add(child_object_name);
serie_line.data.Add(period_final_value );
List<object> series = new List<object>();
series.Add(serie_line);
{
"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]]}
]
}
鉴于
System.Web.Script.Serialization.JavaScriptSerializer jSearializer = new System.Web.Script.Serialization.JavaScriptSerializer();
现在我得到的输出如下:
serie_line.data.Add(child_object_name);
serie_line.data.Add(period_final_value );
List<object> series = new List<object>();
series.Add(serie_line);
{
"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]]}
]
}
但我需要的输出如下:
serie_line.data.Add(child_object_name);
serie_line.data.Add(period_final_value );
List<object> series = new List<object>();
series.Add(serie_line);
{
"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输出在highchart中绘制饼图…我尝试了所有的方法,比如使用字典,创建不同的类,然后使用它的对象等等…但是做不出来
下面是我的全部代码…如果我搞乱了任何循环,我不认识它,但任何人可能会注意到它..请检查下面的代码相同
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);
var serie_line=new{name=series_name,data=new List()};
对于(int k=0;k而言,您的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);
我没有遵循代码的底部部分(如何创建子对象\u名称
和期间\u最终值
),但我认为您需要:
serie_line.data.Add(new List<object>() {child_object_name, period_final_value });
如果我没有错的话,我认为你必须使用字典结构而不是列表来获得所需的结果。不…当我使用字典时…它使用key:value格式…这让我以[“市场份额”:20.00]的形式输出数据在被序列化为JSON之后…这个输出不会在Highchart中给出饼图,它的child\u object\u name
和period\u final\u value
相等吗?为什么不将name
作为一个单独的构建语句,然后将name
JSON连接到数据
JSON,您应该得到{name:BLAH,data:[…]}
。我这样做了…我在另一个列表中取了名称,在另一个列表中取了数据,然后试图将其连接到一个列表中,但后来我发现..它使名称和数据成为同一对象的不同子对象,这使问题更加严重..当我这样做时,它只给出数据中的最后一个值..请c我下面的输出..{“图例”:{“已启用”:“true”},“title”:{“text”:“Financial”},“chart”:{“type”:“pie”},“serie_line”:{“name”:“Actual”,“data”:[[“毛利%”,19.44]]}}听起来像是在循环内部重新创建serie_line
。我看到您在代码块的开始处重新创建它,然后在最高级别的循环中重新创建它,`if(read_Series_Splitted__name_store==Series){serie\u line=new{name=series\u name,data=new List()};}`,这可能是问题的根源吗?