datatable如果想轉換成JSON類型的數據,是需要處理的。直接用微軟提供的JavaScriptSerializer類直接序列化,會報錯。
所以這裏需要貼上兩個方法,專門用來轉換datatable的
#region?DataTable轉換為JSON///?<summary>
///?DataTable生成JSON
///?</summary>
///?<param?name="dt"></param>
///?<returns></returns>
public?static?string?CreateJSON(DataTable?dt)
{
Dictionary<string,?object>?dit?=?new?Dictionary<string,?object>();
List<Dictionary<string,?string>>?list?=?DateTableConverter(dt);
if?(list?!=?null)
{
dit[dt.TableName]?=?DateTableConverter(dt);
return?new?JavaScriptSerializer().Serialize(dit);
}
else
{
return?"";
}
}
///?<summary>
///?將DataTable數據轉化為字典類型
///?</summary>
///?<param?name="dt"></param>
///?<returns></returns>
public?static?List<Dictionary<string,?string>>?DateTableConverter(DataTable?dt)
{
List<Dictionary<string,?string>>?list?=?new?List<Dictionary<string,?string>>();
string?cloName?=?string.Empty;
foreach?(DataRow?dr?in?dt.Rows)
{
Dictionary<string,?string>?cloumn?=?new?Dictionary<string,?string>();
foreach?(DataColumn?dc?in?dt.Columns)
{
cloName?=?dc.ColumnName;
cloumn.Add(cloName,?dr[cloName].ToString());
}
list.Add(cloumn);
}
return?list;
}
#endregion
2.調用代碼如下
DataTable?table?=?new?DataTable("Table1");DataColumn?col1?=?new?DataColumn("ID",?typeof(string));
DataColumn?col2?=?new?DataColumn("Name",?typeof(string));
table.Columns.Add(col1);
table.Columns.Add(col2);
DataRow?row1?=?table.NewRow();
row1["ID"]?=?"1";
row1["Name"]?=?"a";
table.Rows.Add(row1);
DataRow?row2?=?table.NewRow();
row2["ID"]?=?"2";
row2["Name"]?=?"b";
table.Rows.Add(row2);
string?json?=?CreateJSON(table);
3.json結果如下
{"Table1":[{"ID":"1","Name":"a"},{"ID":"2","Name":"b"}]}4.數組中每壹個元素,都是壹行數據。只要循環遍歷,然後將結果添加入妳已經創建好的table中就可以了。還有疑問,繼續追問吧。我先去吃飯了。