2012-11-10 2 views
1

DataTable을 차트에 표시하기 위해 Json Format으로 가져오고 싶습니다.C# DataTable to Json?

public JsonResult GetDataTable() 
{ 
    DataTable dt = new DataTable(); 

    dt.Columns.Add("Jan"); 
    dt.Columns.Add("Feb"); 
    dt.Columns.Add("Mar"); 
    dt.Columns.Add("Apr"); 

    for (int i = 0; i < 10; i++) 
    { 
     dt.Rows.Add(i * 5, i * 10, i * 15, i * 11); 
    } 

    // JsonDataTable = dt to Json 

    return new JsonResult 
    { 
     Data = new 
     { 
      success = true, 
       chartData = JsonDataTable 
     }, 
     JsonRequestBehavior = JsonRequestBehavior.AllowGet 
    }; 
} 

어떻게 DataTable을 Json으로 변환 할 수 있습니까?

감사합니다.

+0

가능한 중복 [ DataTable to JSON] (https://stackoverflow.com/questions/451460/datatable-to-json) –

답변

5

자동 DataTables를 직렬화하는 JSON.NET을 사용할 수 있습니다 (많은 다른 유형 사이!) JSON에.

+1

JSON과 관련하여 .NET Fx에 내장 된 모든 것을 잊어 버릴 수 있습니다. (JSON.NET은 작동하고 놀라운 것입니다.) – cfeduke

+1

실제로. JSON.NET : D를 사용한 이후로 너무 많은 머리카락이 저장되었습니다. –

0

데이터 테이블에 AsEnumerable 메서드를 적용한 다음 일부 LINQ를 적용하여 원하는 형식으로 가져옵니다.

var thatList=(from p in dt.AsEnumerable() 
       select new { 
           Jan= p.Field<string>("Jan"), 
           Feb = p.Field<string>("Feb"), 
           Mar = p.Field<string>("Mar"), 
           Apr = p.Field<string>("Apr") 
          }).ToList(); 

이제 thatList을 사용하여 Json으로 변환 할 수 있습니다.

return Json(new { status = true, chartData = thatList }, 
            JsonRequestBehavior.AllowGet); 
0

왜 이런 식으로 뭔가를하려고하지 않습니다

public static class JSONEncoderHelper 
{ 
    public static string FromXML(DataTable table) 
    { 
     StringBuilder sbuilder = new StringBuilder(); 

     sbuilder.Append("{\""); 
     sbuilder.Append(table.TableName); 
     sbuilder.Append("\":["); 

     bool first = true; 
     foreach (DataRow drow in table.Rows) 
     { 
      if (first) 
      { 
       sbuilder.Append("{"); 
       first = false; 
      } 
      else 
       sbuilder.Append(",{"); 

      bool firstColumn = true; 
      foreach (DataColumn column in table.Columns) 
      { 
       if (firstColumn) 
       { 
        sbuilder.Append(string.Format("\"{0}\":\"{1}\"", column.ColumnName, drow[column].ToString())); 
        firstColumn = false; 
       } 
       else 
       sbuilder.Append(string.Format(",\"{0}\":\"{1}\"", column.ColumnName, drow[column].ToString())); 
      } 
      sbuilder.Append("}"); 
     } 

     sbuilder.Append("]}"); 

     return sbuilder.ToString(); 
    } 
} 

을 당신이 지금해야 할 일은 내가 2 분

에서했던 그 헬퍼 클래스를 리팩토링이다

: