You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DS7/JsonHelper/JsonClass.cs

371 lines
12 KiB
C#

2 years ago
using System;
using System.Data;
using System.Configuration;
using System.Web;
/*using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;*/
using System.Text;
/// <summary>
/// JsonClass 的摘要说明
/// </summary>
public class JsonClass
{
public JsonClass()
{
}
#region 销售模块输出JSON格式的数据
/// <summary>
/// 销售模块输出JSON格式的数据
/// </summary>
/// <param name="OrderId">单据ID</param>
/// <param name="Data">数据</param>
/// <param name="OrderNo">单据编号</param>
/// <param name="strMsg">操作结果信息</param>
/// <param name="isSuc">是否成功1成功、0失败</param>
public JsonClass(int OrderId, string Data, string OrderNo, string strMsg, int isSuc)
{
this.orderid = OrderId;
this.data1 = Data;
this.issuc = isSuc;
this.msg = strMsg;
this.orderno = OrderNo;
}
int orderid;
string data1;
int issuc;
string msg;
string orderno;
public int ID
{
get { return orderid; }
set { this.orderid = value; }
}
public string NO
{
get { return orderno; }
set { this.orderno = value; }
}
public int Sta1
{
get { return issuc; }
set { this.issuc = value; }
}
public string Data1
{
get { return data1; }
set { this.data1 = value; }
}
public string Msg
{
get { return msg; }
set { this.msg = value; }
}
/// <summary>
/// 销售模块输出JSON格式的数据
/// </summary>
/// <returns></returns>
public string ToJosnString()
{
return "{\"data\":\"" + data1 + "\",\"id\":" + orderid + ",\"sta\":" + issuc + ",\"Msg\":\"" + msg + "\",\"no\":\"" + orderno + "\"}";
}
#endregion
//手动输出JSON格式的数据
public JsonClass(string info, string data, int sta)
{
this.info = info;
this.data = data;
this.sta = sta;
}
string info;
string data;
int sta;
public string Info
{
get { return info; }
set { this.info = value; }
}
public string Data
{
get { return data; }
set { this.data = value; }
}
public int Sta
{
get { return sta; }
set { this.sta = value; }
}
//重写ToString()方法以便输出格式是标准的JSON格式
public override string ToString()
{
return "{\"data\":\"" + data + "\",\"info\":\"" + info + "\",\"sta\":" + sta + "}";
}
/// <summary>
/// DataTable转换为json字符串
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string DataTable2Json(DataTable dt)
{
System.Text.StringBuilder jsonBuilder = new System.Text.StringBuilder();
jsonBuilder.Append("[");
if (dt.Rows.Count == 0)
{
jsonBuilder.Append("]");
return jsonBuilder.ToString();
}
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[j].ColumnName);
jsonBuilder.Append("\":\"");
try
{
jsonBuilder.Append((dt.Rows[i][j].ToString().Replace("\"","\\\"")).Replace("\n","\\r\\n"));
}
catch
{
jsonBuilder.Append("");
}
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
//jsonBuilder.Append("\"");
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
return jsonBuilder.ToString();
}
public static string DataTable2NodeJson(DataTable dt)
{
StringBuilder jsonBuilder = new StringBuilder();
bool isedit=false;
jsonBuilder.Append("[");
if (dt.Rows.Count == 0)
{
jsonBuilder.Append("]");
}
else
{
for (int rows1 = 0; rows1 < dt.Rows.Count; rows1++)
{
if (dt.Rows[rows1][4].ToString() != "True" && dt.Rows[rows1][1].ToString() == "0")
{
jsonBuilder.Append("{");
for (int cols1 = 0; cols1 < dt.Columns.Count; cols1++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[cols1].ColumnName);
jsonBuilder.Append("\":\"");
try
{
jsonBuilder.Append((dt.Rows[rows1][cols1].ToString().Replace("\"","\\\"")).Replace("\n","\\r\\n"));
}
catch
{
jsonBuilder.Append("");
}
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
//jsonBuilder.Append("\"");
jsonBuilder.Append("},");
///
///jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
///jsonBuilder.Append("]");
///
}
else if(dt.Rows[rows1][4].ToString()=="True")
{
jsonBuilder.Append("{");
for (int cols1 = 0; cols1 < dt.Columns.Count; cols1++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[cols1].ColumnName);
jsonBuilder.Append("\":\"");
try
{
jsonBuilder.Append((dt.Rows[rows1][cols1].ToString().Replace("\"","\\\"")).Replace("\n","\\r\\n"));
}
catch
{
jsonBuilder.Append("");
}
jsonBuilder.Append("\",");
}
jsonBuilder.Append("\"childClass\":[");
for (int rowChild = 0; rowChild < dt.Rows.Count; rowChild++)
{
if (jsonBuilder[jsonBuilder.Length - 1] == '[' || jsonBuilder[jsonBuilder.Length - 1] == ',')
{
jsonBuilder.Append("{");
}
for (int colChild = 0; colChild < dt.Columns.Count; colChild++)
{
string value1=dt.Rows[rowChild][1].ToString();
string value2=dt.Rows[rows1][2].ToString();
if (value1==value2)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[colChild].ColumnName);
jsonBuilder.Append("\":\"");
try
{
jsonBuilder.Append((dt.Rows[rowChild][colChild].ToString().Replace("\"", "\\\"")).Replace("\n", "\\r\\n"));
}
catch
{
jsonBuilder.Append("");
}
jsonBuilder.Append("\",");
isedit = true;
}
}
if (isedit)
{
if (jsonBuilder[jsonBuilder.Length-1] == ',') { jsonBuilder.Remove(jsonBuilder.Length - 1, 1); }
jsonBuilder.Append("},");
}
//jsonBuilder.Append("\"");
isedit = false;
}
if (jsonBuilder[jsonBuilder.Length - 1] == '{' && jsonBuilder[jsonBuilder.Length - 2] == ',') {
for (int num = 0; num < 2; num++)
{
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
}
}
else if (jsonBuilder[jsonBuilder.Length - 1] == ',')
{
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
}
jsonBuilder.Append("]");
//jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
//jsonBuilder.Append("\"");
jsonBuilder.Append("},");
}
}
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
return jsonBuilder.ToString();
}
public static string ConvertTextToHtml(string chr)
{
if (chr == null)
return "";
chr = chr.Replace("\n", "<Enter>");
return (chr);
}
public static string FormatDataTableToJson(DataTable dt, int TotalCount)
{
StringBuilder sb = new StringBuilder();
sb.Append("{totalCount:'" + TotalCount.ToString() + "',data:");
sb.Append(DataTable2Json(dt));
sb.Append("}");
return sb.ToString();
}
/*包含格式化日期参数*/
public static string DataTableToJson(DataTable dt, int TotalCount)
{
System.Text.StringBuilder jsonBuilder = new System.Text.StringBuilder();
jsonBuilder.Append("{totalCount:'" + TotalCount.ToString() + "',data:");
#region 构造datatable json
jsonBuilder.Append("[");
if (dt.Rows.Count == 0)
{
jsonBuilder.Append("]");
}
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
//jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[j].ColumnName);
jsonBuilder.Append(":\"");
try
{
/*根据datatable列的数据格式 来格式化字符*/
string tmp = string.Empty;
if (dt.Columns[j].DataType.ToString() == "System.Int16" || dt.Columns[j].DataType.ToString() == "System.Int32" || dt.Columns[j].DataType.ToString() == "System.Int64")
tmp = dt.Rows[i][j].ToString();
else if (dt.Columns[j].DataType.ToString() == "System.Decimal")
tmp = dt.Rows[i][j].ToString();
else if (dt.Columns[j].DataType.ToString() == "System.DateTime")
{
if (dt.Rows[i][j] != null && dt.Rows[i][j].ToString() != "")
{
tmp = (Convert.ToDateTime(dt.Rows[i][j].ToString())).ToString("yyyy-MM-dd");
}
}
else
tmp = dt.Rows[i][j].ToString();
jsonBuilder.Append(GetSafeJSONString(tmp));//.Replace("\"","\\\""));
}
catch
{
jsonBuilder.Append("");
}
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
#endregion
jsonBuilder.Append("}");
return jsonBuilder.ToString();
}
private static System.Text.RegularExpressions.Regex safeJSON = new System.Text.RegularExpressions.Regex("[\\n\\r]");
protected static string GetSafeJSONString(string input)
{
string output = input.Replace("\"", "\\\"");
output = safeJSON.Replace(output, "<br>");
return output;
}
}