/************************************************** * 版权所有: * 文 件 名: JSONHelper.cs * 文件描述: * 类型说明: JSONHelper JSON帮助类 * 授权声明: * 版本历史: * v1.0.0 季健国 2010-07-03 新建 ***************************************************/ using System; using System.Collections.Generic; using System.Data; using System.Text; using System.Web.Script.Serialization; namespace Ant.Service.Common { public class JsonHelper111 { /// /// 对象[集合|嵌套对象]转JSON /// /// /// 对象 /// 标准JSON字符串 /// 格式:{"key":"value","key":"value","key":"value"},{} public static string ToJSON(T obj) { try { var js = new JavaScriptSerializer(); js.RecursionLimit = 1; return js.Serialize(obj); } catch (Exception ex) { return ex.Message; } } /// /// 转Grid 标准Json字符串 /// /// /// /// /// {"page":1,"total":1,"records":1,"rows":[{"address":"china","depName":"testName","user":"jayjay","depId":"123"}] } public static string ToGridJson(T obj) { var jsonBuilder = new StringBuilder(); jsonBuilder.Append("{\"page\":1,\"total\":" + "1" + ",\"records\":1,\"rows\""); jsonBuilder.Append(":["); jsonBuilder.Append(ToJSON(obj)); jsonBuilder.Append("]}"); return jsonBuilder.ToString(); } /// /// 转Grid 标准字符串 /// /// /// The list. /// /// {"page":1,"total":0,"records":3,"rows":[{"address":"china","depName":"testName","user":"jayjay","depId":"123"},{}] } public static string ArrayToGridJson(List list) { var jsonBuilder = new StringBuilder(); jsonBuilder.Append("{\"page\":1,\"total\":" + (list.Count / 10) + ",\"records\":" + list.Count + ",\"rows\""); jsonBuilder.Append(":"); jsonBuilder.Append(ToJSON(list)); jsonBuilder.Append("}"); return jsonBuilder.ToString(); } /// /// 转Grid 标准字符串 /// /// /// /// /// {"page":1,"total":0,"records":3,"rows":[{"address":"china","depName":"testName","user":"jayjay","depId":"123"},{}] } public static string ObjListToGridJson(object[] list, int currentPage, int totalPages, int rows) { var jsonBuilder = new StringBuilder(); jsonBuilder.Append("{\"page\":" + currentPage + ",\"total\":" + totalPages + ",\"records\":" + rows + ",\"rows\""); jsonBuilder.Append(":"); jsonBuilder.Append(ToJSON(list)); jsonBuilder.Append("}"); return jsonBuilder.ToString(); } /// /// Arrays to grid json without caption. /// /// 数据二维数组 /// 属性或者标题一维数组,顺序应与数据数组完全相同,且与第二维长度相等或者大于 /// 当前页面 /// 每页行数 /// 总页数,允许为空,为空时忽略掉此参数 /// public static string ArrayToGridJsonWithoutCaption(object[] DataArray, string[] CaptionArray, int currentPage, int rows, int TatolPageNumber) { var jsonBuilder = new StringBuilder(); jsonBuilder.Append("{\"page\":" + currentPage + ",\"total\":" + TatolPageNumber + ",\"records\":" + rows + ",\"rows\""); jsonBuilder.Append(":["); int i = 0, j = 0; foreach (object obj in DataArray) { if (0 < i) jsonBuilder.Append(","); var SubArray = (object[])obj; jsonBuilder.Append("{"); foreach (object subobj in SubArray) { if (0 >= j) jsonBuilder.Append("\"" + CaptionArray[j] + "\":\"" + subobj + "\""); else jsonBuilder.Append(",\"" + CaptionArray[j] + "\":\"" + subobj + "\""); ++j; } jsonBuilder.Append("}"); j = 0; ++i; } jsonBuilder.Append("]}"); return jsonBuilder.ToString(); } /// /// 转TreeGrid 标准字符串 /// /// /// /// /// {"page":1,"total":0,"records":3,"rows":[{"id":"1",cell:["testName","jayjay","123"]}] } public static string IlistToGridJson(IList list) { var jsonBuilder = new StringBuilder(); //jsonBuilder.Append("{\"page\":1,\"total\":" + (list.Count / 10) + ",\"records\":" + list.Count + ",\"rows\""); //jsonBuilder.Append(":["); //foreach (var t in list) //{ // var tt = t as RolePermission; // if (tt != null) // { // jsonBuilder.Append("{"); // Permission p = tt.Permission; // //权限Id // jsonBuilder.AppendFormat("id:{0},", p.Id); // jsonBuilder.Append("cell:["); // //权限name // jsonBuilder.Append("'" + p._Name + "',"); // //权限url // jsonBuilder.Append("'" + p._Page + "',"); // // // jsonBuilder.Append(0+","); // jsonBuilder.Append("null,"); // jsonBuilder.Append(false+","); // jsonBuilder.Append(false); // jsonBuilder.Append("]}"); // jsonBuilder.Append(","); // } //} //jsonBuilder.Remove(jsonBuilder.Length - 1, 1); //jsonBuilder.Append("]"); //jsonBuilder.Append("}"); //json 生成 //jsonBuilder.Append("{total:1,page:1,records:6,"); //jsonBuilder.Append("rows:["); //jsonBuilder.Append("{id:1,cell:['Tabelle','1a2',0,null,false,false]},"); //jsonBuilder.Append("{id:2,cell:['Tabelle','1a2',0,null,false,false]}"); //jsonBuilder.Append("]}"); //xml 生成 //jsonBuilder.Append(""); //jsonBuilder.Append(""); //jsonBuilder.Append(""); //jsonBuilder.Append("1"); //jsonBuilder.Append("系统管理"); //jsonBuilder.Append(""); //jsonBuilder.Append("0"); //jsonBuilder.Append("1"); //jsonBuilder.Append("14"); //jsonBuilder.Append("false"); //jsonBuilder.Append("false"); //jsonBuilder.Append(""); //jsonBuilder.Append(""); //jsonBuilder.Append("2"); //jsonBuilder.Append("部门维护"); //jsonBuilder.Append("SysManage/SysDepList.aspx"); //jsonBuilder.Append("1"); //jsonBuilder.Append("2"); //jsonBuilder.Append("3"); //jsonBuilder.Append("true"); //jsonBuilder.Append("true"); //jsonBuilder.Append(""); //foreach (T t in list) //{ // var tt = t as RolePermission; // if (null != tt) // { // jsonBuilder.Append(""); // jsonBuilder.Append("1"); // jsonBuilder.Append(""+tt.Permission._Name+""); // if (string.IsNullOrEmpty(tt.Permission._Page)) // { // jsonBuilder.Append(""); // jsonBuilder.Append("0"); // jsonBuilder.Append("1"); // jsonBuilder.Append("14"); // jsonBuilder.Append("false"); // jsonBuilder.Append("false"); // } // else // { // jsonBuilder.Append("SysManage/SysDepList.aspx"); // jsonBuilder.Append("0"); // jsonBuilder.Append("1"); // jsonBuilder.Append("14"); // jsonBuilder.Append("false"); // jsonBuilder.Append("false"); // } // jsonBuilder.Append(""); // } //} //jsonBuilder.Append(""); return jsonBuilder.ToString(); } ///// ///// 【角色维护】中的【权限列表】 to Gridjson 数据 ///// ///// ///// ///// ///// ///// //public static string powList2Gridjson(object[] list, int currentPage, int totalPages, int rows) //{ // var jsonBuilder = new StringBuilder(); // jsonBuilder.Append("{\"page\":" + currentPage + ",\"total\":" + totalPages + ",\"records\":" + list.Length + // ",\"rows\""); // jsonBuilder.Append(":["); // foreach (object rowData in list) // { // if (null != rowData) // { // var p = (Permission) rowData; // jsonBuilder.Append("{"); // jsonBuilder.Append("\"Id\":\"" + p.Id + "\","); //[ID]绑定 // jsonBuilder.Append("\"_Name\":\"" + p._Name + "\","); //[Name]绑定 // jsonBuilder.Append("\"_Page\":\"" + p._Page + "\","); //[page]绑定 // //判断【该页是否有此功能】 // if ("0" != p._Read.ToString()) // { // jsonBuilder.Append("\"_Read\":\"" + // "" + "\","); //[_read]绑定 // } // else // { // jsonBuilder.Append("\"_Read\":\"" + // "" + "\","); //[_read]绑定 // } // //判断【该页是否有此功能】 // if ("0" != p._Write.ToString()) // { // jsonBuilder.Append("\"_Write\":\"" + // "" + "\","); //[_write]绑定 // } // else // { // jsonBuilder.Append("\"_Write\":\"" + // "" + "\","); //[_write]绑定 // } // //判断【该页是否有此功能】 // if ("0" != p._Delete.ToString()) // { // jsonBuilder.Append("\"_Delete\":\"" + // "" + "\","); //[_delte]绑定 // } // else // { // jsonBuilder.Append("\"_Delete\":\"" + "" + "\","); //[_delete]绑定 // } // //判断【该页是否有此功能】 // if ("0" != p._Update.ToString()) // { // jsonBuilder.Append("\"_Update\":\"" + // "" + "\","); //[_update]绑定 // } // else // { // jsonBuilder.Append("\"_Update\":\"" + "" + "\","); //[_update]绑定 // } // //判断【该页是否有此功能】 // if ("0" != p._Cancel.ToString()) // { // jsonBuilder.Append("\"_Cancel\":\"" + // "" + "\","); //[_cancel解除]绑定 // } // else // { // jsonBuilder.Append("\"_Cancel\":\"" + "" + "\","); //[_cancel解除]绑定 // } // //判断【该页是否有此功能】 // if ("0" != p._Audit.ToString()) // { // jsonBuilder.Append("\"_Audit\":\"" + // "" + "\""); //[_audit 审核]绑定 // } // else // { // jsonBuilder.Append("\"_Audit\":\"" + "" + "\""); //[_audit 审核]绑定 // } // jsonBuilder.Append("}"); // jsonBuilder.Append(","); // } // } // jsonBuilder.Remove(jsonBuilder.Length - 1, 1); // jsonBuilder.Append("]}"); // return jsonBuilder.ToString(); //} ////------------------------------------------------------------------------ ///// ///// 【角色维护】中的【权限列表】 to Gridjson 数据 ///// ///// ///// ///// ///// ///// //public static string powList2GridjsonForView(object[] list, int currentPage, int totalPages, int rows) //{ // var jsonBuilder = new StringBuilder(); // jsonBuilder.Append("{\"page\":" + currentPage + ",\"total\":" + totalPages + ",\"records\":" + list.Length + // ",\"rows\""); // jsonBuilder.Append(":["); // foreach (object rowData in list) // { // if (null != rowData) // { // var p = (Permission) rowData; // jsonBuilder.Append("{"); // jsonBuilder.Append("\"Id\":\"" + p.Id + "\","); //[ID]绑定 // jsonBuilder.Append("\"_Name\":\"" + p._Name + "\","); //[Name]绑定 // jsonBuilder.Append("\"_Page\":\"" + p._Page + "\","); //[page]绑定 // //判断【该页是否有此功能】 // if ("0" != p._Read.ToString()) // { // jsonBuilder.Append("\"_Read\":\"" + // "" + // "\","); //[_read]绑定 // } // else // { // jsonBuilder.Append("\"_Read\":\"" + // "" + "\","); //[_read]绑定 // } // //判断【该页是否有此功能】 // if ("0" != p._Write.ToString()) // { // jsonBuilder.Append("\"_Write\":\"" + // "" + "\","); //[_write]绑定 // } // else // { // jsonBuilder.Append("\"_Write\":\"" + // "" + "\","); //[_write]绑定 // } // //判断【该页是否有此功能】 // if ("0" != p._Delete.ToString()) // { // jsonBuilder.Append("\"_Delete\":\"" + // "" + "\","); //[_delte]绑定 // } // else // { // jsonBuilder.Append("\"_Delete\":\"" + "" + "\","); //[_delete]绑定 // } // //判断【该页是否有此功能】 // if ("0" != p._Update.ToString()) // { // jsonBuilder.Append("\"_Update\":\"" + // "" + "\","); //[_update]绑定 // } // else // { // jsonBuilder.Append("\"_Update\":\"" + "" + "\","); //[_update]绑定 // } // //判断【该页是否有此功能】 // if ("0" != p._Cancel.ToString()) // { // jsonBuilder.Append("\"_Cancel\":\"" + // "" + "\","); //[_cancel解除]绑定 // } // else // { // jsonBuilder.Append("\"_Cancel\":\"" + "" + "\","); //[_cancel解除]绑定 // } // //判断【该页是否有此功能】 // if ("0" != p._Audit.ToString()) // { // jsonBuilder.Append("\"_Audit\":\"" + // "" + "\""); //[_audit 审核]绑定 // } // else // { // jsonBuilder.Append("\"_Audit\":\"" + "" + "\""); //[_audit 审核]绑定 // } // jsonBuilder.Append("}"); // jsonBuilder.Append(","); // } // } // jsonBuilder.Remove(jsonBuilder.Length - 1, 1); // jsonBuilder.Append("]}"); // return jsonBuilder.ToString(); //} //------------------------------------------------------------------------ /// /// JSON转对象 /// /// /// The json. /// obj public static T ToObject(string json) { try { var js = new JavaScriptSerializer(); return js.Deserialize(json); } catch (Exception ex) { throw ex; } } /// /// JSON转对象 /// /// /// The j. /// obj[]对象集合 public static object[] JSONToArray(string j) { try { var js = new JavaScriptSerializer(); return js.DeserializeObject(j) as object[]; } catch (Exception ex) { throw ex; } } #region DataSet 转 JSON /// /// DataTable转换成Json格式 /// /// DataTable /// JSON字符串 /// 格式如:{"rows":[{"id":0,"cell":["address":"china","depName":"testName","user":"jayjay","depId":"123"]},....]} public static string DataTable2Json(DataTable dt) { var jsonBuilder = new StringBuilder(); jsonBuilder.Append("{\"rows\":["); for (int i = 0; i < dt.Rows.Count; i++) { jsonBuilder.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { jsonBuilder.Append("\"" + dt.Columns[j].ColumnName + "\"" + ":" + "\"" + dt.Rows[i][j] + "\""); jsonBuilder.Append(","); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("},"); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("]"); jsonBuilder.Append("}"); return jsonBuilder.ToString(); } /// /// DataSet 转 JSON /// /// DataSet /// JSON字符串 public static string DataSet2Json(DataSet ds) { var strJson = new StringBuilder(); foreach (DataTable dt in ds.Tables) { strJson.Append("{\""); strJson.Append(dt.TableName); strJson.Append("\":"); strJson.Append(DataTable2Json(dt)); strJson.Append("}"); } return strJson.ToString(); } /// /// DataTable转GridJson /// /// DataTable /// Grid json字符串 public static string DTToGridJson(DataTable dt) { var jsonBuilder = new StringBuilder(); jsonBuilder.Append("{\"page\":1,\"total\":" + (dt.Rows.Count / 10) + ",\"records\":" + dt.Rows.Count + ",\"rows\""); jsonBuilder.Append(":["); for (int i = 0; i < dt.Rows.Count; i++) { jsonBuilder.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { jsonBuilder.Append("\"" + dt.Columns[j].ColumnName + "\"" + ":" + "\"" + dt.Rows[i][j] + "\""); jsonBuilder.Append(","); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("},"); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("]"); jsonBuilder.Append("}"); return jsonBuilder.ToString(); } public static string DTToGridJson(DataTable dt, int currentPage, int totalPages, int pageRecorder) { var jsonBuilder = new StringBuilder(); jsonBuilder.Append("{\"page\":" + currentPage + ",\"total\":" + Math.Ceiling(totalPages / double.Parse(pageRecorder.ToString())) + ",\"records\":" + totalPages + ",\"rows\""); jsonBuilder.Append(":["); for (int i = 0; i < dt.Rows.Count; i++) { jsonBuilder.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { jsonBuilder.Append("\"" + dt.Columns[j].ColumnName + "\"" + ":" + "\"" + dt.Rows[i][j] + "\""); jsonBuilder.Append(","); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("},"); } if (',' == jsonBuilder[jsonBuilder.Length - 1]) { jsonBuilder.Remove(jsonBuilder.Length - 1, 1); } jsonBuilder.Append("]"); jsonBuilder.Append("}"); return jsonBuilder.ToString(); } #endregion } }