2017-07-31 52 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