我正在研究highcharts并从c#中的ajax发送数据。它现在工作正常我在这里遇到了一些不同类型的图表数据
以前当我必须向图表发送数据时,我只需创建系列,类别等的属性
public class SeriesQuarter2
{
public string id { get; set; }
public string name { get; set; }
public List<Data2> data { get; set; }
}
并填写此属性的列表并使用javascriptserializer对其进行序列化 并存储此json字符串并返回到ajax成功,我使用JSON.parse,
进行解析所以我想制作的图表系列看起来像这样
series: [
{
id: '1',
name: 'Tokyo',
data: [-49.9, 71.5]
},
{
id: '2',
name: 'New York',
data: [83.6, -78.8]
}
]
现在这很好,但现在我必须为这种类型的系列发送对象
series: [
{
type: 'column',
name: 'Tokyo',
data: [-49.9, 71.5]
},
{
type: 'column',
name: 'New York',
data: [83.6, -78.8]
},
{
type: 'scatter',
showInLegend: false,
data: [
{
name:'Mydata',
y: 200,
mydata : 4,
color:'red',
marker: {
symbol: 'url(http://www.highcharts.com/demo/gfx/snow.png)'
}
},
{
name:'Mydata2',
y: 200,
mydata : -4,
marker: {
symbol: 'url(http://www.highcharts.com/demo/gfx/sun.png)'
}
}
]
}
]
我如何制作具有不同属性的此类对象?
答案 0 :(得分:2)
好的,这里有一个想法如何:
class RootObject
{
public List<SeriesItem> series { get; set; } = new List<SeriesItem>();
}
class SeriesItem
{
public string type { get; set; }
public string name { get; set; }
public bool? showInLegend { get; set; }
public List<object> data { get; set; } = new List<object>();
}
class OtherData
{
public int y { get; set; }
public int mydata { get; set; }
public string name { get; set; }
public string color { get; set; }
public Marker marker { get; set; }
}
class Marker
{
public string symbol { get; set; }
}
用法:
var item1 = new SeriesItem();
item1.type = "column";
item1.name = "Tokyo";
item1.data = new List<object>();
item1.data.AddRange(numbersData);
item1.data.Add(-49.9);
item1.data.Add(71.5);
var otherData1 = new OtherData();
otherData1.name = "MyData";
//...fill other fields
var item2 = new SeriesItem();
item2.type = "scatter";
item2.data.Add(otherData1);
var jsonObject = new RootObject();
jsonObject.series.Add(item1);
jsonObject.series.Add(item2);
//convert jsonObject to json
答案 1 :(得分:0)
我的建议是使用任何第三方序列化程序,如Newtonsoft json.net简单,简单,免费......