来自c#asp.net webforms中数据表的自定义JSON数据
发布时间:2020-12-16 07:16:02 所属栏目:百科 来源:网络整理
导读:我目前正在尝试用项目中的json文件提供cal-heatmap js,手动数据输入工作正常,但是我无法将数据表转换为实际需要的json格式,我目前正在获取格式从下面的代码如下 public void ConvertDataTabletoString(){ DataTable dtjson = new DataTable(); con.Open(); S
我目前正在尝试用项目中的json文件提供cal-heatmap js,手动数据输入工作正常,但是我无法将数据表转换为实际需要的json格式,我目前正在获取格式从下面的代码如下
public void ConvertDataTabletoString() { DataTable dtjson = new DataTable(); con.Open(); SqlDataAdapter da = new SqlDataAdapter("select Date,count(id) as co from volunteer Group BY Date Order by Date",con); da.Fill(dtjson); con.Close(); 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 dtjson.Rows) { row = new Dictionary<string,object>(); foreach (DataColumn col in dtjson.Columns) { row.Add(col.ColumnName,dr[col]); } rows.Add(row); } 它正在生成这样的JSON格式 {"Date":"2/15/2016","co":8},{"Date":"2/24/2016","co":2},{"Date":"2/25/2016","co":1},{"Date":"2/6/2016",{"Date":"2/7/2016","co":4},{"Date":"2/8/2016",{"Date":"3/19/2016","co":17},{"Date":"3/21/2016","co":1} 但我希望数据采用以下格式,没有列名和多个括号 { "2/15/2016": 20,"2/24/2016": 40 } 我不介意你是否可以继续在文本文件中进行,而不是使用JSON序列化 解决方法
你有两个选择
对于一般情况=>您拥有的任何列都不需要任何列名称,那么您可以拥有的有效数据可能如下所示(列表列表) [ [row1col1value,row1col2value,row1col3value] [row2col1value,row2col2value,row2col3value] ] 你可以像下面这样得到它 List<List<string>> rows = new List<List<string>>(); foreach (DataRow dr in dtjson.Rows) { List<string> row = new List<string>(); foreach (DataColumn col in dtjson.Columns) { row.Add(dr[col].toString()); } rows.Add(row); } 如果您完全需要您所编写的样本,那么它纯粹是您的特定需要,它不是一般惯例,以下代码仅适用于您,它将为您提供您所需的确切格式,即 Dictionary<string,object> rows = new Dictionary<string,object>(); foreach (DataRow dr in dtjson.Rows) { rows.[dtjson.col[0].toString()],dr[dtjson.col[1]]); rows.Add(row); } 编辑:OP的贡献 foreach (DataRow drp in dtjso.Rows) { DateTime dat = Convert.ToDateTime(drp["Date"]); int epo = epoch(dat); string check = Convert.ToString(drp["co"]); string abc = string.Format(""{0}": {1},",epo,check); sb.Append(abc); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |