JsonOperate 帮助类
引用 Newtonsoft.Json
using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Data; using System.Web.Script.Serialization; //下载Newtonsoft.Json.dll public class JsonOperate { private JavaScriptSerializer Jss = new JavaScriptSerializer(); private string _IdField; private string _IdType; private string _TextField; private string _StateField; private string _CheckedField; private string _ParentIdField; private string _IconClsField; private string _AttributesField; private string _IconCls; private string _ParentId; private string _State; private string _AllData; private string _Checked; private string _Attributes; private DataTable _JsonTable; public DataTable JsonTable { get { return this._JsonTable; } set { this._JsonTable = value; } } public string IdField { get { return this._IdField; } set { this._IdField = value; } } public string IdType { get { return this._IdType; } set { this._IdType = value; } } public string TextField { get { return this._TextField; } set { this._TextField = value; } } public string StateField { get { return this._StateField; } set { this._StateField = value; } } public string CheckedField { get { return this._CheckedField; } set { this._CheckedField = value; } } public string SelectedField { get; set; } public string ParentId { get { return this._ParentId; } set { this._ParentId = value; } } public string ParentIdField { get { return this._ParentIdField; } set { this._ParentIdField = value; } } public string AttributesField { get { return this._AttributesField; } set { this._AttributesField = value; } } public string IconClsField { get { return this._IconClsField; } set { this._IconClsField = value; } } public string IconCls { get { return this._IconCls; } set { this._IconCls = value; } } public string Attributes { get { return this._Attributes; } set { this._Attributes = value; } } public string Checked { get { return this._Checked; } set { this._Checked = value; } } public string State { get { return this._State; } set { this._State = value; } } public string AllData { get { return this._AllData; } set { this._AllData = value; } } public string GetTreeJson() { System.Collections.Generic.List<System.Collections.Generic.Dictionary<string, object>> list = new System.Collections.Generic.List<System.Collections.Generic.Dictionary<string, object>>(); string text = ""; if (!string.IsNullOrEmpty(this.ParentIdField)) { text = this.ParentIdField + " is Null"; if (string.IsNullOrEmpty(this.IdType)) { text = text + " or " + this.ParentIdField + "='0'"; } else { text = text + " or " + this.ParentIdField + "=''"; } } if (this.AllData == "true") { list.Add(new System.Collections.Generic.Dictionary<string, object> { { "id", "" }, { "text", "全部" } }); } DataRow[] array = this.JsonTable.Select(text); for (int i = 0; i < array.Length; i++) { DataRow dataRow = array[i]; System.Collections.Generic.Dictionary<string, object> dictionary = new System.Collections.Generic.Dictionary<string, object>(); this.ParentId = dataRow[this.IdField].ToString(); dictionary.Add("id", dataRow[this.IdField].ToString()); dictionary.Add("text", dataRow[this.TextField].ToString()); if (!string.IsNullOrEmpty(this.StateField)) { dictionary.Add("state", dataRow[this.StateField].ToString()); } else if (!string.IsNullOrEmpty(this.State)) { dictionary.Add("state", this.State); } if (!string.IsNullOrEmpty(this.CheckedField)) { dictionary.Add("checked", dataRow[this.CheckedField].ToString()); } else if (!string.IsNullOrEmpty(this.Checked)) { dictionary.Add("checked", this.Checked); } if (!string.IsNullOrEmpty(this.SelectedField)) { dictionary.Add("selected", dataRow[this.SelectedField].ToString()); } if (!string.IsNullOrEmpty(this.IconClsField)) { dictionary.Add("iconCls", dataRow[this.IconClsField].ToString()); } else if (!string.IsNullOrEmpty(this.IconCls)) { dictionary.Add("iconCls", this.IconCls); } if (!string.IsNullOrEmpty(this.AttributesField)) { dictionary.Add("attributes", dataRow[this.AttributesField].ToString()); } else if (!string.IsNullOrEmpty(this.Attributes)) { dictionary.Add("attributes", this.Attributes); } if (!string.IsNullOrEmpty(this.ParentIdField)) { dictionary.Add("children", this.GetTreeChildrenJson()); } list.Add(dictionary); } return this.Jss.Serialize(list); } public System.Collections.Generic.List<System.Collections.Generic.Dictionary<string, object>> GetTreeChildrenJson() { System.Collections.Generic.List<System.Collections.Generic.Dictionary<string, object>> list = new System.Collections.Generic.List<System.Collections.Generic.Dictionary<string, object>>(); string filterExpression = this.ParentIdField + " = '" + this.ParentId + "'"; DataRow[] array = this.JsonTable.Select(filterExpression); for (int i = 0; i < array.Length; i++) { DataRow dataRow = array[i]; System.Collections.Generic.Dictionary<string, object> dictionary = new System.Collections.Generic.Dictionary<string, object>(); this.ParentId = dataRow[this.IdField].ToString(); dictionary.Add("id", dataRow[this.IdField].ToString()); dictionary.Add("text", dataRow[this.TextField].ToString()); if (!string.IsNullOrEmpty(this.StateField)) { dictionary.Add("state", dataRow[this.StateField].ToString()); } else if (!string.IsNullOrEmpty(this.State)) { dictionary.Add("state", this.State); } if (!string.IsNullOrEmpty(this.CheckedField)) { dictionary.Add("checked", dataRow[this.CheckedField].ToString()); } else if (!string.IsNullOrEmpty(this.Checked)) { dictionary.Add("checked", this.Checked); } if (!string.IsNullOrEmpty(this.SelectedField)) { dictionary.Add("selected", dataRow[this.SelectedField].ToString()); } if (!string.IsNullOrEmpty(this.IconClsField)) { dictionary.Add("iconCls", dataRow[this.IconClsField].ToString()); } else if (!string.IsNullOrEmpty(this.IconCls)) { dictionary.Add("iconCls", this.IconCls); } if (!string.IsNullOrEmpty(this.AttributesField)) { dictionary.Add("attributes", dataRow[this.AttributesField].ToString()); } else if (!string.IsNullOrEmpty(this.Attributes)) { dictionary.Add("attributes", this.Attributes); } dictionary.Add("children", this.GetTreeChildrenJson()); list.Add(dictionary); } return list; } public string GetTreeGridJson() { System.Collections.Generic.List<System.Collections.Generic.Dictionary<string, object>> list = new System.Collections.Generic.List<System.Collections.Generic.Dictionary<string, object>>(); string text = this.ParentIdField + " is Null"; if (string.IsNullOrEmpty(this.IdType)) { text = text + " or " + this.ParentIdField + "='0'"; } else { text = text + " or " + this.ParentIdField + "=''"; } DataRow[] array = this.JsonTable.Select(text); for (int i = 0; i < array.Length; i++) { DataRow dataRow = array[i]; System.Collections.Generic.Dictionary<string, object> dictionary = new System.Collections.Generic.Dictionary<string, object>(); foreach (DataColumn dataColumn in this.JsonTable.Columns) { if (dataColumn.DataType == System.Type.GetType("System.DateTime")) { string value; if (string.IsNullOrEmpty(dataRow[dataColumn.ColumnName].ToString())) { value = ""; } else { value = System.Convert.ToDateTime(dataRow[dataColumn.ColumnName].ToString()).ToString("yyyy-MM-dd HH:mm"); } dictionary.Add(dataColumn.ColumnName, value); } else { dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToString()); } } this.ParentId = dataRow[this.IdField].ToString(); if (!string.IsNullOrEmpty(this.StateField)) { dictionary.Add("state", dataRow[this.StateField].ToString()); } else if (!string.IsNullOrEmpty(this.State)) { dictionary.Add("state", this.State); } if (!string.IsNullOrEmpty(this.CheckedField)) { dictionary.Add("checked", dataRow[this.CheckedField].ToString()); } else if (!string.IsNullOrEmpty(this.Checked)) { dictionary.Add("checked", this.Checked); } if (!string.IsNullOrEmpty(this.IconClsField)) { dictionary.Add("iconCls", dataRow[this.IconClsField].ToString()); } else if (!string.IsNullOrEmpty(this.IconCls)) { dictionary.Add("iconCls", this.IconCls); } if (!string.IsNullOrEmpty(this.AttributesField)) { dictionary.Add("attributes", dataRow[this.AttributesField].ToString()); } else if (!string.IsNullOrEmpty(this.Attributes)) { dictionary.Add("attributes", this.Attributes); } dictionary.Add("children", this.GetTreeGridChildrenJson()); list.Add(dictionary); } return this.Jss.Serialize(list); } public System.Collections.Generic.List<System.Collections.Generic.Dictionary<string, object>> GetTreeGridChildrenJson() { System.Collections.Generic.List<System.Collections.Generic.Dictionary<string, object>> list = new System.Collections.Generic.List<System.Collections.Generic.Dictionary<string, object>>(); string filterExpression = this.ParentIdField + " = '" + this.ParentId + "'"; DataRow[] array = this.JsonTable.Select(filterExpression); for (int i = 0; i < array.Length; i++) { DataRow dataRow = array[i]; System.Collections.Generic.Dictionary<string, object> dictionary = new System.Collections.Generic.Dictionary<string, object>(); foreach (DataColumn dataColumn in this.JsonTable.Columns) { if (dataColumn.DataType == System.Type.GetType("System.DateTime")) { string value; if (string.IsNullOrEmpty(dataRow[dataColumn.ColumnName].ToString())) { value = ""; } else { value = System.Convert.ToDateTime(dataRow[dataColumn.ColumnName].ToString()).ToString("yyyy-MM-dd HH:mm"); } dictionary.Add(dataColumn.ColumnName, value); } else { dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToString()); } } this.ParentId = dataRow[this.IdField].ToString(); if (!string.IsNullOrEmpty(this.StateField)) { dictionary.Add("state", dataRow[this.StateField].ToString()); } else if (!string.IsNullOrEmpty(this.State)) { dictionary.Add("state", this.State); } if (!string.IsNullOrEmpty(this.CheckedField)) { dictionary.Add("checked", dataRow[this.CheckedField].ToString()); } else if (!string.IsNullOrEmpty(this.Checked)) { dictionary.Add("checked", this.Checked); } if (!string.IsNullOrEmpty(this.IconClsField)) { dictionary.Add("iconCls", dataRow[this.IconClsField].ToString()); } else if (!string.IsNullOrEmpty(this.IconCls)) { dictionary.Add("iconCls", this.IconCls); } if (!string.IsNullOrEmpty(this.AttributesField)) { dictionary.Add("attributes", dataRow[this.AttributesField].ToString()); } else if (!string.IsNullOrEmpty(this.Attributes)) { dictionary.Add("attributes", this.Attributes); } dictionary.Add("children", this.GetTreeGridChildrenJson()); list.Add(dictionary); } return list; } public string GetDataGridJson(DataTable JsonTable) { return string.Concat(new string[] { "{ \"total\":", JsonTable.Rows.Count.ToString(), ",\"rows\":", this.TableToBasicJson(JsonTable), "}" }); } public string GetDataGridJson(DataTable JsonTable, string strCount) { return string.Concat(new string[] { "{ \"total\":", strCount, ",\"rows\":", this.TableToBasicJson(JsonTable), "}" }); } public string GetDataGridJson(DataTable JsonTable, int count) { return string.Concat(new object[] { "{ \"total\":", count, ",\"rows\":", this.TableToBasicJson(JsonTable), "}" }); } public string GetDataGridJson(DataTable JsonTable, DataTable strCount, DataTable FooterTable) { return string.Concat(new object[] { "{ \"total\":", strCount, ",\"rows\":", this.TableToBasicJson(JsonTable), ",\"footer\":", this.TableToBasicJson(FooterTable), "}" }); } public string TableToBasicJson(DataTable JsonTable) { System.Collections.Generic.List<System.Collections.Generic.Dictionary<string, object>> list = new System.Collections.Generic.List<System.Collections.Generic.Dictionary<string, object>>(); foreach (DataRow dataRow in JsonTable.Rows) { System.Collections.Generic.Dictionary<string, object> dictionary = new System.Collections.Generic.Dictionary<string, object>(); foreach (DataColumn dataColumn in JsonTable.Columns) { if (dataColumn.DataType == System.Type.GetType("System.DateTime")) { string value; if (string.IsNullOrEmpty(dataRow[dataColumn.ColumnName].ToString())) { value = ""; } else { value = System.Convert.ToDateTime(dataRow[dataColumn.ColumnName].ToString()).ToString("yyyy-MM-dd HH:mm"); } dictionary.Add(dataColumn.ColumnName, value); } else { dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToString()); } } list.Add(dictionary); } return this.Jss.Serialize(list); } public DataTable JsonToTable(string JsonString) { System.Collections.Generic.List<System.Collections.Generic.Dictionary<string, object>> list = new System.Collections.Generic.List<System.Collections.Generic.Dictionary<string, object>>(); list = this.Jss.Deserialize<System.Collections.Generic.List<System.Collections.Generic.Dictionary<string, object>>>(JsonString); DataTable dataTable = new DataTable(); if (list.Count > 0) { foreach (System.Collections.Generic.Dictionary<string, object> current in list) { if (dataTable.Columns.Count == 0) { foreach (string current2 in current.Keys) { dataTable.Columns.Add(current2, current[current2].GetType()); } } DataRow dataRow = dataTable.NewRow(); foreach (string current2 in current.Keys) { dataRow[current2] = current[current2]; } dataTable.Rows.Add(dataRow); } } return dataTable; } //public static string ToJson(object t) //{ // Formatting arg_12_1 = 1; // JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings(); // jsonSerializerSettings.set_NullValueHandling(0); // return JsonConvert.SerializeObject(t, arg_12_1, jsonSerializerSettings); //} //public static string ToJson(object t, bool HasNullIgnore) //{ // string result; // if (HasNullIgnore) // { // Formatting arg_1A_1 = 1; // JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings(); // jsonSerializerSettings.set_NullValueHandling(1); // result = JsonConvert.SerializeObject(t, arg_1A_1, jsonSerializerSettings); // } // else // { // result = JsonOperate.ToJson(t); // } // return result; //} public static T FromJson<T>(string strJson) where T : class { T result; if (!string.IsNullOrEmpty(strJson)) { result = JsonConvert.DeserializeObject<T>(strJson); } else { result = default(T); } return result; } }
海阔天高