【发布时间】:2016-04-05 13:51:21
【问题描述】:
我目前正在尝试在项目中为 cal-heatmap js 提供一个 json 文件,手动数据输入它工作正常,但是我无法将数据表转换为实际需要的 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 序列化
【问题讨论】:
-
可以在javascript中使用JSON.parse(obj)进行反序列化。为什么你使用JavascriptSerializer而不使用它?
-
WriteLine(string.Format("\"{0}\": {1},", date, num); -
@stuartd 以及如何将其保存到目录中的文件中?尽管使用了标准选项,但仍然无法完成此操作,您如何写入文件?
-
@JoséFrancisco 您好,感谢您的回复,所以您的意思是我可以继续通过 JSON.parse(obj) 使用相同的结果集?你能想到在这种情况下我该怎么做吗?谢谢
-
试试这个:var ts = JSON.parse(objJson); var val = ts["日期"];