我目前正在尝试用项目中的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","co":1},
{"Date":"2/7/2016","co":4},
{"Date":"2/8/2016","co":8},
{"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);
}
如果您完全需要您所编写的样本,那么它纯粹是您的特定需要,它不是一般惯例,以下代码仅适用于您,它将为您提供您所需的确切格式,即
{
“2016年2月15日”:20,
“2016年2月24日”:40
}
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);
}