如何在c#中为这种类型制作json对象?

时间:2017-07-31 06:56:49

标签: c# jquery json highcharts

我正在研究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)'
                }   
            }
        ]
    }
]

我如何制作具有不同属性的此类对象?

2 个答案:

答案 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简单,简单,免费......