121 lines
3.9 KiB
C#
121 lines
3.9 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Data;
|
||
|
||
namespace AGVSystem
|
||
{
|
||
class Senddataset
|
||
{
|
||
/// <summary>
|
||
/// 将dataSet转换为json
|
||
/// </summary>
|
||
/// <param name="dataSet"></param>
|
||
/// <returns></returns>
|
||
public static string DatasetToJson(DataSet dataSet)
|
||
{
|
||
string jsonString = "{";
|
||
foreach (DataTable table in dataSet.Tables)
|
||
{
|
||
jsonString += "\"" + table.TableName + "\":" + DataTableToJson(table) + ",";
|
||
}
|
||
jsonString = jsonString.TrimEnd(',');
|
||
return jsonString + "}";
|
||
}
|
||
public static string DataTableToJson(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 = StringToJson(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;
|
||
}
|
||
//#region 私有方法
|
||
/// <summary>
|
||
/// 过滤特殊字符
|
||
/// </summary>
|
||
/// <param name="s">字符串</param>
|
||
/// <returns>json字符串</returns>
|
||
private static string StringToJson(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();
|
||
}
|
||
}
|
||
}
|