之前有篇写构造json的文章,首先将数据库中的数据读出,封装到datatable中,然后用一个写好的DataToJson函数获取datatable中每个元素。在这个方法里,比较困扰我的是,难以修改列名,因为列名是自动获取,今天修改之后,代码如下
string DataToJson(DataTable dt, int count)
{
StringBuilder sbjson = new StringBuilder();
sbjson.Append("{");
sbjson.Append("\"code\":" + 0 + "," + "\"msg\":" + "1" + "," + "\"count\":" + count + ",\"data\":[");
if (dt != null)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
if (i > 0)
{
sbjson.Append(",");
sbjson.Append("{");
foreach (DataColumn dc in dt.Columns)
{
if (dc.ColumnName == "一月计划用水量"|| dc.ColumnName == "二月计划用水量" || dc.ColumnName == "三月计划用水量" || dc.ColumnName == "四月计划用水量" || dc.ColumnName == "五月计划用水量" || dc.ColumnName == "六月计划用水量" || dc.ColumnName == "七月计划用水量" || dc.ColumnName == "八月计划用水量" || dc.ColumnName == "九月计划用水量" || dc.ColumnName == "十月计划用水量" || dc.ColumnName == "十一月计划用水量" || dc.ColumnName == "十二月计划用水量")
{
dc.ColumnName = "月计划用水量";
}
if(dc.ColumnName=="差值一"|| dc.ColumnName == "差值二" || dc.ColumnName == "差值三" || dc.ColumnName == "差值四" || dc.ColumnName == "差值五" || dc.ColumnName == "差值六" || dc.ColumnName == "差值七" || dc.ColumnName == "差值八" || dc.ColumnName == "差值九" || dc.ColumnName == "差值十" || dc.ColumnName == "差值十一" || dc.ColumnName == "差值十二")
{
dc.ColumnName = "超额用水量";//可以将列名改变
}
if (dt.Columns.IndexOf(dc) > 0)
{
sbjson.Append(",");
sbjson.Append("\"" + dc.ColumnName + "\":\"" + dt.Rows[i][dc.ColumnName].ToString().Trim() + "\"");
}
else
{
sbjson.Append("\"" + dc.ColumnName + "\":\"" + dt.Rows[i][dc.ColumnName].ToString().Trim() + "\"");
}
}
sbjson.Append("}");
}
else
{
sbjson.Append("{");
foreach (DataColumn dc in dt.Columns)
{
if (dc.ColumnName == "一月计划用水量" || dc.ColumnName == "二月计划用水量" || dc.ColumnName == "三月计划用水量" || dc.ColumnName == "四月计划用水量" || dc.ColumnName == "五月计划用水量" || dc.ColumnName == "六月计划用水量" || dc.ColumnName == "七月计划用水量" || dc.ColumnName == "八月计划用水量" || dc.ColumnName == "九月计划用水量" || dc.ColumnName == "十月计划用水量" || dc.ColumnName == "十一月计划用水量" || dc.ColumnName == "十二月计划用水量")
{
dc.ColumnName = "月计划用水量";
}
if (dc.ColumnName == "差值一" || dc.ColumnName == "差值二" || dc.ColumnName == "差值三" || dc.ColumnName == "差值四" || dc.ColumnName == "差值五" || dc.ColumnName == "差值六" || dc.ColumnName == "差值七" || dc.ColumnName == "差值八" || dc.ColumnName == "差值九" || dc.ColumnName == "差值十" || dc.ColumnName == "差值十一" || dc.ColumnName == "差值十二")
{
dc.ColumnName = "超额用水量";//可以将列名改变
}
if (dt.Columns.IndexOf(dc) > 0)
{
sbjson.Append(",");
sbjson.Append("\"" + dc.ColumnName + "\":\"" + dt.Rows[i][dc.ColumnName].ToString().Trim() + "\"");
}
else
{
sbjson.Append("\"" + dc.ColumnName + "\":\"" + dt.Rows[i][dc.ColumnName].ToString().Trim() + "\"");
}
}
sbjson.Append("}");
}
}
}
sbjson.Append("]}");
return sbjson.ToString();
}
在遍历获取一行数据中的每个元素时,加以判断,如果该列名等于“”,就改为"******",之后再进行json格式的构造。关键代码在于:
if(dc.ColumnName==" ")
{
dc.ColumnName = "超额用水量";//可以将列名改变
}