Datatable转换为Json 的方法
/// <summary>
///
Datatable转换为Json
///
</summary>
/// <param
name="table">Datatable对象</param>
///
<returns>Json字符串</returns>
public static string ToJson(DataTable
dt)
{
StringBuilder jsonString = new
StringBuilder();
jsonString.Append("[");
DataRowCollection drc = dt.Rows;
for (int i = 0; i < drc.Count;
i++)
{
jsonString.Append("{");
for (int j = 0; j < dt.Columns.Count;
j++)
{
string strKey =
dt.Columns[j].ColumnName;
string strValue =
drc[i][j].ToString();
Type type =
dt.Columns[j].DataType;
jsonString.Append("\"" + strKey +
"\":");
strValue = StringFormat(strValue,
type);
if (j < dt.Columns.Count -
1)
{
jsonString.Append(strValue +
",");
}
else
{
jsonString.Append(strValue);
}
}
jsonString.Append("},");
}
jsonString.Remove(jsonString.Length - 1,
1);
jsonString.Append("]");
return
jsonString.ToString();
}
///
<summary>
/// 格式化字符型、日期型、布尔型
/// </summary>
/// <param
name="str"></param>
/// <param
name="type"></param>
///
<returns></returns>
private static string
StringFormat(string str, Type type)
{
if (type ==
typeof(string))
{
str =
String2Json(str);
str = "\"" + str + "\"";
}
else if (type ==
typeof(DateTime))
{
str =
"\"" + str + "\"";
}
else if (type ==
typeof(bool))
{
str =
str.ToLower();
}
else if (type != typeof(string)
&&
string.IsNullOrEmpty(str))
{
str =
"\"" + str + "\"";
}
return
str;
}
///
<summary>
/// 过滤特殊字符
///
</summary>
/// <param
name="s">字符串</param>
///
<returns>json字符串</returns>
private static
string String2Json(String s)
{
StringBuilder sb = new
StringBuilder();
for (int i = 0; i
< s.Length; i++)
{
char c =
s.ToCharArray()[i];
switch (c)
{
case
‘\"‘:
sb.Append("\\\"");
break;
case
‘\\‘:
sb.Append("\\\\");
break;
case
‘/‘:
sb.Append("\\/");
break;
case
‘\b‘:
sb.Append("\\b");
break;
case
‘\f‘:
sb.Append("\\f");
break;
case
‘\n‘:
sb.Append("\\n");
break;
case
‘\r‘:
sb.Append("\\r");
break;
case
‘\t‘:
sb.Append("\\t");
break;
default:
sb.Append(c);
break;
}
}
return
sb.ToString();
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。