2016-06-03 2 views
-1

데이터베이스에서 가져온 DataTable을 Json 형식으로 변환하려고합니다. 하지만 오류가 발생합니다.DataTable을 Json 형식으로 변환하는 방법?

public string ConvertTableToJSON(DataTable objDataTable) 
    { 
     ArrayList columnNames = new ArrayList(); 
     int rowCount = objDataTable.Rows.Count; 
     int currentRow = 1; 

     string json = ""; 

     //fetching column names 
     foreach (DataColumn objColumn in objDataTable.Columns) 
     { 
      columnNames.Add(objColumn.ColumnName); 
     } 

     //generating json string for each row 
     foreach (DataRow objRow in objDataTable.Rows) 
     { 
      json = json + "{"; 
      json = json + ConvertRowToJSON(objRow, columnNames); 
      json = json + "}"; 

      if (currentRow != rowCount) 
      { 
       json = json + ","; 
      } 

      currentRow = currentRow + 1; 
     } 

     return json; 
    } 

위 코드는 DataTable을 Json 형식으로 변환하는 코드입니다.

"색인이 배열 경계 밖에있었습니다."는 코드를 디버깅 할 때의 오류입니다. 이 오류는이 방법은 JSON 문자열로 DataTable을 변환하는 데 사용됩니다

if (data[0] == '[' || data[0] == '{') 

답변

0

라인에서 발생 그것은 JSON 형식으로 내용을 직렬화 System.Web.Script.Serialization.JavaScriptSerializer를 사용

public string ConvertDataTabletoJSON(DataTable dt) 
{ 

System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>(); 
Dictionary<string, object> row; 
foreach (DataRow dr in dt.Rows) 
{ 
row = new Dictionary<string, object>(); 
foreach (DataColumn col in dt.Columns) 
{ 
row.Add(col.ColumnName, dr[col]); 
} 
rows.Add(row); 
} 
return serializer.Serialize(rows); 
} 

:

0

당신은에 DataTable을 변환 할 수 있습니다 다음 코드를 사용하여 JavaScriptSerializer를 사용하는 JSON

public string DataTableToJsonWithJavaScriptSerializer(DataTable objDataTable) 
{ 
JavaScriptSerializer jsSerializer = new JavaScriptSerializer(); 
List<Dictionary<string, object>> parentRow = new List<Dictionary<string, object>>(); 
Dictionary<string, object> childRow; 
foreach (DataRow row in objDataTable.Rows) 
{ 
childRow = new Dictionary<string, object>(); 
foreach (DataColumn col in table.Columns) 
{ 
childRow.Add(col.ColumnName, row[col]); 
} 
parentRow.Add(childRow); 
} 
return jsSerializer.Serialize(parentRow); 
} 

당신은 Json.Net DLL을 사용하고

public string DataTableToJsonWithJsonNet(DataTable objDataTable) 
{ 
    string jsonString=string.Empty; 
    jsonString = JsonConvert.SerializeObject(objDataTable); 
    return jsonString; 
} 

라이브러리를 포함

같은 JSON으로 데이터 테이블 변환 할 수 있습니다.

Newtonsoft.Json;

관련 문제