using Infragistics.Win.UltraWinGrid; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; namespace Core.StlMes.Client.Mcp.VRP.Vrp { public class JsonHelper { public static string ToJson(DataTable dt) { StringBuilder jsonBuilder = new StringBuilder(); 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(GetLanguageFormat(dt.Columns[j].ColumnName, true)); jsonBuilder.Append("':'"); jsonBuilder.Append(escape(dt.Rows[i][j].ToString())); jsonBuilder.Append("',"); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("},"); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("]"); return jsonBuilder.ToString(); } public static string ToJson(UltraGrid dt) { StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.Append("["); for (int i = 0; i < dt.Rows.Count; i++) { jsonBuilder.Append("{"); for (int j = 0; j < dt.Rows.Count; j++) { jsonBuilder.Append("'"); jsonBuilder.Append(GetLanguageFormat(dt.Rows[j].ToString(), true)); jsonBuilder.Append("':'"); jsonBuilder.Append(escape(dt.Rows[i].ToString())); jsonBuilder.Append("',"); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("},"); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("]"); return jsonBuilder.ToString(); } private static string GetLanguageFormat(string strName, bool isLowerBegin) { string[] strs = strName.Split('_'); strName = ""; for (int i = 0; i < strs.Length; i++) { if (i == 0 && isLowerBegin) { strName += strs[i].ToLower(); } else { strName += strs[i].Substring(0, 1).ToUpper() + strs[i].Substring(1).ToLower(); } } return strName; } public static string ToJson(DataRow dr) { StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.Append("{"); for (int j = 0; j < dr.Table.Columns.Count; j++) { jsonBuilder.Append("\""); jsonBuilder.Append(dr.Table.Columns[j].ColumnName); jsonBuilder.Append("\":\""); jsonBuilder.Append(escape(dr[j].ToString())); jsonBuilder.Append("\","); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("}"); return jsonBuilder.ToString(); } public static string ToJson(UltraGridRow row) { StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.Append("{"); for (int j = 0; j < row.Cells.Count; j++) { jsonBuilder.Append("\""); //jsonBuilder.Append(row.Cells[j].Column.Key); jsonBuilder.Append(GetLanguageFormat(row.Cells[j].Column.Key, true)); jsonBuilder.Append("\":\""); jsonBuilder.Append(escape(row.Cells[j].Value.ToString())); jsonBuilder.Append("\","); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("}"); return jsonBuilder.ToString(); } /// /// json特殊字符转义 /// /// old json /// new json private static string escape(string json) { string newJson = ""; if (!string.IsNullOrEmpty(json)) { newJson = json.Replace("\\", "\\\\").Replace("\r", "\\r").Replace("\n", "\\n").Replace("\"", "\\\""); } return newJson; } } }