/// <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();
}
相关文章
- 07-09数组转List最高效的方法
- 07-09【转】在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解失效的原因和解决方法
- 07-09记录数组转集合(int[]转list)的快速方法,数组转list必须先将数组转为list,int[]转list有问题,不能用,integer[]转list可以使用。
- 07-09转:VCS仿真vivado IP的方法
- 07-09LabVIEW 换为文本C代码的的方法与例程
- 07-09将普通函数当中的arguments(类数组转换为数组以及类数组调用数组方法)
- 07-09ASCII十进制转字符串的方法
- 07-09(转)enable_from_this方法的使用与陷阱
- 07-09Windows编程中char*转LPCWSTR解决的方法总结
- 07-09【解决方法】labelme将json文件转png文件