2010-03-02 8 views
8

google.visualization.datatable에 의해 예상되는 JSON 소스를 C#을 사용하여 어떻게 만들 수 있습니까?C#을 사용하여 Google DataTable JSON 예상 소스를 만드는 방법은 무엇입니까?

var dt = new google.visualization.DataTable(
    { 
     cols: [{id: 'task', label: 'Task', type: 'string'}, 
       {id: 'hours', label: 'Hours per Day', type: 'number'}], 
     rows: [{c:[{v: 'Work'}, {v: 11}]}, 
       {c:[{v: 'Eat'}, {v: 2}]}, 
       {c:[{v: 'Commute'}, {v: 2}]}, 
       {c:[{v: 'Watch TV'}, {v:2}]}, 
       {c:[{v: 'Sleep'}, {v:7, f:'7.000'}]} 
      ] 
    }, 
    0.6 
) 

답변

8

나는 .NET 환경에 익숙하지 않은 해요 있지만,에 대한 .NET 도우미가되어 예상 JSON이 문서에 설명 된 바와 같이 이상한 구조를 가지고 있기 때문에 분명히 JavaScriptSerializer를 사용하여 밖으로 질문 Google 시각화 API bortosky-google-visualization이라고합니다. 라이브러리는 System.Data.DataTable 개체의 JSON Google DataTable을 작성합니다.

+0

. 고맙습니다. –

+1

Asp.net MVC 면도기에는 유용하지 않습니다. 또한 ADO.NET을 사용하지 않습니다. – RohannG

1

위의 예에서 예상 JSON은 JSON이 아니라 Javascript 객체 리터럴입니다. JSON은 Javascript 객체 리터럴 표기법의 하위 집합이지만 위의 예는 Google DataTable이 비슷한 JSON으로 초기화되는 경우에도 작동해야합니다. 올바른 JSON을 얻으려면 키 주위에 큰 따옴표를 넣으십시오.

실제로 Google 데이터 테이블 용 JSON을 구성하려면 DataContractJsonSerializer 또는 JavaScriptSerializer을 사용할 수 있습니다. 그러나 시작 지점이 System.Data.DataTable 인 경우 위의 대답에서 언급 한 라이브러리를 사용하는 것이 더 쉽습니다.

2

이것을 달성하는 또 다른 방법은 google.datatable 시각화 JSON 형식으로 변환 할 수있는 강력한 형식의 System.DataTable을 사용하여 작업 할 수있는 Google DataTable .Net 래퍼 (https://googledatatablelib.codeplex.com/)를 사용하는 것입니다.

이 서버 측 코드

public string GetStatisticsForChart(string messageCode) 
{ 
    //some repository that returns data.... 
    var data = _statisticsRepository.GetPerMessage(messageCode); 

    //It simply returns a list of objects with Year and Count properties. 
    var query = (from t in data 
       group t by new {t.TimeStamp.Year} 
       into grp 
       select new 
        { 
         grp.Key.Year, 
         Count = grp.Count() 
        }).ToList(); 

    //let's instantiate the DataTable. 
    var dt = new Google.DataTable.Net.Wrapper.DataTable(); 
    dt.AddColumn(new Column(ColumnType.String, "Year", "Year")); 
    dt.AddColumn(new Column(ColumnType.Number, "Count", "Count")); 

    foreach (var item in query) 
    { 
     Row r = dt.NewRow(); 
     r.AddCellRange(new Cell[] 
     { 
      new Cell(item.Year), 
      new Cell(item.Count) 
     }); 
     dt.AddRow(r); 
    } 

//Let's create a Json string as expected by the Google Charts API. 
return dt.GetJson(); 
} 

는 다음 JSON 출력

{ 
    "cols": [ 
      {"type": "string", "id": "Year", "label": "Year"}, 
      {"type": "number", "id": "Count", "label": "Count"} 
     ], 
    "rows": [ 
      {"c": [{"v": "2011"}, {"v": "1860"}]}, 
      {"c": [{"v": "2012"}, {"v": "2000"}]} 
     ] 
} 

를 생성 할 것이고, 이는 Asp.NET WebAPI 또는 직접 ASP.NET MVC 컨트롤러로 사용할 수있다.

0

C#을 통해 구글 차트 데이터 테이블을 만들 수있는 가장 좋은 방법은 여기에 데이터를 반복하고 모델 클래스를 작성하고 JSON으로 채워진 모델을 반환하는 것입니다 모델 표현입니다 : - 내가 찾던 정확히 무엇을

public class GChartsDataTbl 
{ 
    public List<Col> cols { get; set; } 
    public List<Row> rows { get; set; } 
} 
public class Col 
{ 
    public string id { get; set; } 
    public string type { get; set; } 
} 

public class C 
{ 
    public string v { get; set; } 
    public object f { get; set; } 
} 

public class Row 
{ 
    public List<C> c { get; set; } 
}