将数据集转换为JSON在asp.net中无效

时间:2018-03-13 14:16:44

标签: c# json dataset

我在很多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 ....

的定义

2 个答案:

答案 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