我最近一直在学习如何从数据表生成json
和geojson
流。至少可以说这是一场艰苦的战斗。
当前,我正在尝试为图表创建自定义JSON
流。这是正确的JSON
格式:
{
"labels": ["January","February","March","April"],"datasets":
[{
"label": "NAME","data": [1,2,3,4]
},{
"label": "NUM","data": [11,12,13,14]
}]
}
我的数据表如下:
monthname Data1 Data2
January 1 11
February 2 12
March 3 13
April 4 14
到目前为止,这就是我所拥有的:
public static string DataTableToCustomJSONString(DataTable dataTable)
{
string monthName = string.Empty;
string data1 = string.Empty;
string data2 = string.Empty;
foreach (DataRow row in dataTable.Rows)
{
monthName += row["MonthName"].ToString() + ",";
data1 += row["data1"].ToString() + ",";
data2 += row["data2"].ToString() + ",";
}
monthName = monthName.Remove(monthName.Length - 1);
data1 = data1.Remove(data1.Length - 1);
data2 = data2.Remove(data2.Length - 1);
var obj = new
{
labels = monthName,datasets = new dynamic [] {
new { label = "NAME",Data = data1 },new { label = "NUM",Data = data2 },}
};
return JsonConvert.SerializeObject(obj,Formatting.Indented);
}
哪个返回以下json:
{
"labels": "January,February,March,April","datasets": [
{
"label": "NAME","data": "1,4"
},{
"label": "NUM","data": "11,14"
}
]
}
如您所见,月份应该用方括号括起来,并且每个月都应使用双引号(["January","April"]
而不是"January,April"
)。
另外,data
属性应该看起来像[2,4,5]
,但是用双引号括起来(`“ 11,14”'' )。
此外,我不确定在数据表中进行迭代是否是生成months字符串的最佳方法。
感谢您的帮助。