我在很多Table
中提供数据,所以我希望它在返回时将其转换为json。所以我尝试了下面的
public static string DataSetToJSON(DataSet dset)
{
JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
List<Dictionary<string, object>> parentRow = new List<Dictionary<string, object>>();
Dictionary<string, object> childRow;
foreach (DataRow row in dset.Rows)
{
childRow = new Dictionary<string, object>();
foreach (DataColumn col in dset.Columns)
{
childRow.Add(col.ColumnName, row[col]);
}
parentRow.Add(childRow);
}
return jsSerializer.Serialize(parentRow);
}
但我在dset.Rows
System.data.dataset不包含
的定义Rows
....
答案 0 :(得分:0)
数据集是数据表的集合。行将存在于数据表中。因此,您需要检查数据集中的数据表,然后循环遍历现有的列和行。
尝试获取第一个数据:
DataTable firstTable = dset.Tables[0];
如果有许多数据表,则需要将数据表循环为:
foreach(DataTable dt in dset.Tables)
{
//then you can get the rows and columns values for each table as above
foreach (DataRow row in dt.Rows)
{
childRow = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
childRow.Add(col.ColumnName, row[col]);
}
parentRow.Add(childRow);
}
}
答案 1 :(得分:0)
经过检查和研究以及SLAKS
的指导后,我终于做到了。
public static string DataSetToJSON(DataSet ds)
{
JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
List<Dictionary<string, object>> parentRow = new List<Dictionary<string, object>>();
Dictionary<string, object> childRow;
foreach (DataTable table in ds.Tables)
{
foreach (DataRow dr in table.Rows)
{
childRow = new Dictionary<string, object>();
foreach (DataColumn col in table.Columns)
{
childRow.Add(col.ColumnName, dr[col]);
}
parentRow.Add(childRow);
}
}
return jsSerializer.Serialize(parentRow);
}
感谢SLAKS