2017-07-31 72 views
0

我正在从事高层建筑,并从c#发送ajax数据。它工作正常,现在我坚持一些不同类型的这里的图表数据如何在c#中为此类型创建json对象?

以前的时候,我必须将数据发送到图表I简单地创建系列,类别等

public class SeriesQuarter2 
{ 
    public string id { get; set; } 
    public string name { get; set; } 
    public List<Data2> data { get; set; } 
} 

的性质,并填写列表使用javascriptserializer 此属性和序列化和存储此JSON字符串,返回阿贾克斯成功在那里我解析使用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)' 
       } 
      } 
     ] 
    } 
] 

我怎么会做出这种类型的具有不同属性的对象吗?

+3

做出不同类型具有不同的属性? – Reniuz

+0

@Reniuz在系列有一个数据变化的属性,首先它有数字列表,然后它具有不同的属性名称,Y,Mydata等 –

+0

从头开始...在JSON系列有一个列表...一些不同的数据。但!不同的数据具有类似的字段:名称和数据。所以你可以创建一些具有字段名称和泛型类型数据字段的基类。或者你可以简单地找到json-> c#c​​lass转换器工具,看看它产生了什么。 – Reniuz

回答

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 
+0

Thankx我的朋友 –

+0

没问题。请注意,我没有测试过这个。 – Reniuz

+0

我测试过了 –

0

我的建议是使用任何第三方串行像Newtonsoft json.net方便,简单,免费......

+0

OP想从json创建类。这个框架可以做到吗? – Reniuz

+0

我假设你会做一次类创建,所以你可以使用在线转换器。 [例如](https://jsonutils.com/) – Daghan

-2

你应该先了解在C#Interface概念。然后只有你可以在C#中处理复杂的JSON对象。

+1

为什么在这种情况下需要接口? – Reniuz