2016-06-03 12 views
-1

Ich versuche, die DataTable, die ich aus der Datenbank abgerufen habe, in das Json-Format zu konvertieren. Aber ich bekomme einen Fehler.Wie man eine DataTable in Json Format umwandelt?

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; 
    } 

Das obige ist der Code für die Konvertierung des DataTable in Json-Format.

"Index war außerhalb der Grenzen des Arrays." Ist der Fehler beim Debuggen des Codes. Dieser Fehler tritt in der Leitung

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

Antwort

0

Diese Methode verwendet wird Datentabelle

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); 
} 
zu JSON-String zu konvertieren

Es verwendet System.Web.Script.Serialization.JavaScriptSerializer den Inhalt JSON Format zu serialisiert:

0

Sie können Datatable Umrechnen in JSON mit JavaScriptSerializer unter Verwendung des folgenden Codes

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); 
} 

Sie können Json.Net DLL verwenden und konvertieren Datentabelle zu json wie

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

Bibliothek.

Newtonsoft.Json;

Verwandte Themen