引用 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 = ; 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 = ; 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 = ; 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 = ; 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 > )
{
foreach (System.Collections.Generic.Dictionary<string, object> current in list)
{
if (dataTable.Columns.Count == )
{
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;
}
}