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();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|