using Infragistics.Win.UltraWinGrid; using System.Data; using System.Text; namespace Core.StlMes.Client.Judge.Commons { 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(dt.Columns[j].ColumnName); 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(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("\":\""); 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; } public static DataTable toTable(string json) { return Newtonsoft.Json.JsonConvert.DeserializeObject(json, typeof(DataTable)) as DataTable; } } }