JsonOldHelper.cs 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615
  1. /**************************************************
  2. * 版权所有:
  3. * 文 件 名: JSONHelper.cs
  4. * 文件描述:
  5. * 类型说明: JSONHelper JSON帮助类
  6. * 授权声明:
  7. * 版本历史:
  8. * v1.0.0 季健国 2010-07-03 新建
  9. ***************************************************/
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Data;
  13. using System.Text;
  14. using System.Web.Script.Serialization;
  15. namespace Ant.Service.Common
  16. {
  17. public class JsonHelper111
  18. {
  19. /// <summary>
  20. /// 对象[集合|嵌套对象]转JSON
  21. /// </summary>
  22. /// <typeparam name="T"></typeparam>
  23. /// <param name="obj">对象</param>
  24. /// <returns>标准JSON字符串</returns>
  25. /// 格式:{"key":"value","key":"value","key":"value"},{}
  26. public static string ToJSON<T>(T obj)
  27. {
  28. try
  29. {
  30. var js = new JavaScriptSerializer();
  31. js.RecursionLimit = 1;
  32. return js.Serialize(obj);
  33. }
  34. catch (Exception ex)
  35. {
  36. return ex.Message;
  37. }
  38. }
  39. /// <summary>
  40. /// 转Grid 标准Json字符串
  41. /// </summary>
  42. /// <typeparam name="T"></typeparam>
  43. /// <param name="obj"></param>
  44. /// <returns></returns>
  45. /// {"page":1,"total":1,"records":1,"rows":[{"address":"china","depName":"testName","user":"jayjay","depId":"123"}] }
  46. public static string ToGridJson<T>(T obj)
  47. {
  48. var jsonBuilder = new StringBuilder();
  49. jsonBuilder.Append("{\"page\":1,\"total\":" + "1" + ",\"records\":1,\"rows\"");
  50. jsonBuilder.Append(":[");
  51. jsonBuilder.Append(ToJSON(obj));
  52. jsonBuilder.Append("]}");
  53. return jsonBuilder.ToString();
  54. }
  55. /// <summary>
  56. /// 转Grid 标准字符串
  57. /// </summary>
  58. /// <typeparam name="T"></typeparam>
  59. /// <param name="list">The list.</param>
  60. /// <returns></returns>
  61. /// {"page":1,"total":0,"records":3,"rows":[{"address":"china","depName":"testName","user":"jayjay","depId":"123"},{}] }
  62. public static string ArrayToGridJson<T>(List<T> list)
  63. {
  64. var jsonBuilder = new StringBuilder();
  65. jsonBuilder.Append("{\"page\":1,\"total\":" + (list.Count / 10) + ",\"records\":" + list.Count + ",\"rows\"");
  66. jsonBuilder.Append(":");
  67. jsonBuilder.Append(ToJSON(list));
  68. jsonBuilder.Append("}");
  69. return jsonBuilder.ToString();
  70. }
  71. /// <summary>
  72. /// 转Grid 标准字符串
  73. /// </summary>
  74. /// <typeparam name="T"></typeparam>
  75. /// <param name="obj"></param>
  76. /// <returns></returns>
  77. /// {"page":1,"total":0,"records":3,"rows":[{"address":"china","depName":"testName","user":"jayjay","depId":"123"},{}] }
  78. public static string ObjListToGridJson(object[] list, int currentPage, int totalPages, int rows)
  79. {
  80. var jsonBuilder = new StringBuilder();
  81. jsonBuilder.Append("{\"page\":" + currentPage + ",\"total\":" + totalPages + ",\"records\":" + rows +
  82. ",\"rows\"");
  83. jsonBuilder.Append(":");
  84. jsonBuilder.Append(ToJSON(list));
  85. jsonBuilder.Append("}");
  86. return jsonBuilder.ToString();
  87. }
  88. /// <summary>
  89. /// Arrays to grid json without caption.
  90. /// </summary>
  91. /// <param name="DataArray">数据二维数组</param>
  92. /// <param name="CaptionArray">属性或者标题一维数组,顺序应与数据数组完全相同,且与第二维长度相等或者大于</param>
  93. /// <param name="currentPage">当前页面</param>
  94. /// <param name="rows">每页行数</param>
  95. /// <param name="TatolPageNumber">总页数,允许为空,为空时忽略掉此参数</param>
  96. /// <returns></returns>
  97. public static string ArrayToGridJsonWithoutCaption(object[] DataArray, string[] CaptionArray, int currentPage,
  98. int rows, int TatolPageNumber)
  99. {
  100. var jsonBuilder = new StringBuilder();
  101. jsonBuilder.Append("{\"page\":" + currentPage + ",\"total\":" + TatolPageNumber + ",\"records\":" + rows +
  102. ",\"rows\"");
  103. jsonBuilder.Append(":[");
  104. int i = 0, j = 0;
  105. foreach (object obj in DataArray)
  106. {
  107. if (0 < i)
  108. jsonBuilder.Append(",");
  109. var SubArray = (object[])obj;
  110. jsonBuilder.Append("{");
  111. foreach (object subobj in SubArray)
  112. {
  113. if (0 >= j)
  114. jsonBuilder.Append("\"" + CaptionArray[j] + "\":\"" + subobj + "\"");
  115. else
  116. jsonBuilder.Append(",\"" + CaptionArray[j] + "\":\"" + subobj + "\"");
  117. ++j;
  118. }
  119. jsonBuilder.Append("}");
  120. j = 0;
  121. ++i;
  122. }
  123. jsonBuilder.Append("]}");
  124. return jsonBuilder.ToString();
  125. }
  126. /// <summary>
  127. /// 转TreeGrid 标准字符串
  128. /// </summary>
  129. /// <typeparam name="T"></typeparam>
  130. /// <param name="obj"></param>
  131. /// <returns></returns>
  132. /// {"page":1,"total":0,"records":3,"rows":[{"id":"1",cell:["testName","jayjay","123"]}] }
  133. public static string IlistToGridJson<T>(IList<T> list)
  134. {
  135. var jsonBuilder = new StringBuilder();
  136. //jsonBuilder.Append("{\"page\":1,\"total\":" + (list.Count / 10) + ",\"records\":" + list.Count + ",\"rows\"");
  137. //jsonBuilder.Append(":[");
  138. //foreach (var t in list)
  139. //{
  140. // var tt = t as RolePermission;
  141. // if (tt != null)
  142. // {
  143. // jsonBuilder.Append("{");
  144. // Permission p = tt.Permission;
  145. // //权限Id
  146. // jsonBuilder.AppendFormat("id:{0},", p.Id);
  147. // jsonBuilder.Append("cell:[");
  148. // //权限name
  149. // jsonBuilder.Append("'" + p._Name + "',");
  150. // //权限url
  151. // jsonBuilder.Append("'" + p._Page + "',");
  152. // //
  153. // jsonBuilder.Append(0+",");
  154. // jsonBuilder.Append("null,");
  155. // jsonBuilder.Append(false+",");
  156. // jsonBuilder.Append(false);
  157. // jsonBuilder.Append("]}");
  158. // jsonBuilder.Append(",");
  159. // }
  160. //}
  161. //jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
  162. //jsonBuilder.Append("]");
  163. //jsonBuilder.Append("}");
  164. //json 生成
  165. //jsonBuilder.Append("{total:1,page:1,records:6,");
  166. //jsonBuilder.Append("rows:[");
  167. //jsonBuilder.Append("{id:1,cell:['Tabelle','1a2',0,null,false,false]},");
  168. //jsonBuilder.Append("{id:2,cell:['Tabelle','1a2',0,null,false,false]}");
  169. //jsonBuilder.Append("]}");
  170. //xml 生成
  171. //jsonBuilder.Append("<?xml version='1.0' encoding='utf-8' ?>");
  172. //jsonBuilder.Append("<rows>");
  173. //jsonBuilder.Append("<row>");
  174. //jsonBuilder.Append("<cell>1</cell>");
  175. //jsonBuilder.Append("<cell>系统管理</cell>");
  176. //jsonBuilder.Append("<cell />");
  177. //jsonBuilder.Append("<cell>0</cell>");
  178. //jsonBuilder.Append("<cell>1</cell>");
  179. //jsonBuilder.Append("<cell>14</cell>");
  180. //jsonBuilder.Append("<cell>false</cell>");
  181. //jsonBuilder.Append("<cell>false</cell>");
  182. //jsonBuilder.Append("</row>");
  183. //jsonBuilder.Append("<row>");
  184. //jsonBuilder.Append("<cell>2</cell>");
  185. //jsonBuilder.Append("<cell>部门维护</cell>");
  186. //jsonBuilder.Append("<cell>SysManage/SysDepList.aspx</cell>");
  187. //jsonBuilder.Append("<cell>1</cell>");
  188. //jsonBuilder.Append("<cell>2</cell>");
  189. //jsonBuilder.Append("<cell>3</cell>");
  190. //jsonBuilder.Append("<cell>true</cell>");
  191. //jsonBuilder.Append("<cell>true</cell>");
  192. //jsonBuilder.Append("</row>");
  193. //foreach (T t in list)
  194. //{
  195. // var tt = t as RolePermission;
  196. // if (null != tt)
  197. // {
  198. // jsonBuilder.Append("<row>");
  199. // jsonBuilder.Append("<cell>1</cell>");
  200. // jsonBuilder.Append("<cell>"+tt.Permission._Name+"</cell>");
  201. // if (string.IsNullOrEmpty(tt.Permission._Page))
  202. // {
  203. // jsonBuilder.Append("<cell />");
  204. // jsonBuilder.Append("<cell>0</cell>");
  205. // jsonBuilder.Append("<cell>1</cell>");
  206. // jsonBuilder.Append("<cell>14</cell>");
  207. // jsonBuilder.Append("<cell>false</cell>");
  208. // jsonBuilder.Append("<cell>false</cell>");
  209. // }
  210. // else
  211. // {
  212. // jsonBuilder.Append("<cell>SysManage/SysDepList.aspx</cell>");
  213. // jsonBuilder.Append("<cell>0</cell>");
  214. // jsonBuilder.Append("<cell>1</cell>");
  215. // jsonBuilder.Append("<cell>14</cell>");
  216. // jsonBuilder.Append("<cell>false</cell>");
  217. // jsonBuilder.Append("<cell>false</cell>");
  218. // }
  219. // jsonBuilder.Append("</row>");
  220. // }
  221. //}
  222. //jsonBuilder.Append("</rows>");
  223. return jsonBuilder.ToString();
  224. }
  225. ///// <summary>
  226. ///// 【角色维护】中的【权限列表】 to Gridjson 数据
  227. ///// </summary>
  228. ///// <param name="list"></param>
  229. ///// <param name="currentPage"></param>
  230. ///// <param name="totalPages"></param>
  231. ///// <param name="rows"></param>
  232. ///// <returns></returns>
  233. //public static string powList2Gridjson(object[] list, int currentPage, int totalPages, int rows)
  234. //{
  235. // var jsonBuilder = new StringBuilder();
  236. // jsonBuilder.Append("{\"page\":" + currentPage + ",\"total\":" + totalPages + ",\"records\":" + list.Length +
  237. // ",\"rows\"");
  238. // jsonBuilder.Append(":[");
  239. // foreach (object rowData in list)
  240. // {
  241. // if (null != rowData)
  242. // {
  243. // var p = (Permission) rowData;
  244. // jsonBuilder.Append("{");
  245. // jsonBuilder.Append("\"Id\":\"" + p.Id + "\","); //[ID]绑定
  246. // jsonBuilder.Append("\"_Name\":\"" + p._Name + "\","); //[Name]绑定
  247. // jsonBuilder.Append("\"_Page\":\"" + p._Page + "\","); //[page]绑定
  248. // //判断【该页是否有此功能】
  249. // if ("0" != p._Read.ToString())
  250. // {
  251. // jsonBuilder.Append("\"_Read\":\"" +
  252. // "<input type='checkbox' onclick='return onCheck(this.id);' id='" +
  253. // p.Id + "_Read' value='" + p._Read + "' />" + "\","); //[_read]绑定
  254. // }
  255. // else
  256. // {
  257. // jsonBuilder.Append("\"_Read\":\"" +
  258. // "<input type='checkbox'onclick='return onCheck(this.id);' disabled='disabled' id='" +
  259. // p.Id + "_Read' value='" + p._Read + "' />" + "\","); //[_read]绑定
  260. // }
  261. // //判断【该页是否有此功能】
  262. // if ("0" != p._Write.ToString())
  263. // {
  264. // jsonBuilder.Append("\"_Write\":\"" +
  265. // "<input type='checkbox'onclick='return onCheck(this.id);' onclick='onCheck();' id='" +
  266. // p.Id + "_Write' value='" + p._Write + "' />" + "\","); //[_write]绑定
  267. // }
  268. // else
  269. // {
  270. // jsonBuilder.Append("\"_Write\":\"" +
  271. // "<input type='checkbox'onclick='return onCheck(this.id);' disabled='disabled' id='" +
  272. // p.Id + "_Write' value='" + p._Write + "' />" + "\","); //[_write]绑定
  273. // }
  274. // //判断【该页是否有此功能】
  275. // if ("0" != p._Delete.ToString())
  276. // {
  277. // jsonBuilder.Append("\"_Delete\":\"" +
  278. // "<input type='checkbox'onclick='return onCheck(this.id);' onclick='onCheck();' id='" +
  279. // p.Id + "_Delete' value='" + p._Delete + "' />" + "\","); //[_delte]绑定
  280. // }
  281. // else
  282. // {
  283. // jsonBuilder.Append("\"_Delete\":\"" + "<input type='checkbox' disabled='disabled' id='" + p.Id +
  284. // "_Delete' value='" + p._Delete + "' />" + "\","); //[_delete]绑定
  285. // }
  286. // //判断【该页是否有此功能】
  287. // if ("0" != p._Update.ToString())
  288. // {
  289. // jsonBuilder.Append("\"_Update\":\"" +
  290. // "<input type='checkbox'onclick='return onCheck(this.id);' onclick='onCheck();' id='" +
  291. // p.Id + "_Update' value='" + p._Update + "' />" + "\","); //[_update]绑定
  292. // }
  293. // else
  294. // {
  295. // jsonBuilder.Append("\"_Update\":\"" + "<input type='checkbox' disabled='disabled' id='" + p.Id +
  296. // "_Update' value='" + p._Update + "' />" + "\","); //[_update]绑定
  297. // }
  298. // //判断【该页是否有此功能】
  299. // if ("0" != p._Cancel.ToString())
  300. // {
  301. // jsonBuilder.Append("\"_Cancel\":\"" +
  302. // "<input type='checkbox' onclick='return onCheck(this.id);' id='" + p.Id +
  303. // "_Cancel' value='" + p._Cancel + "' />" + "\","); //[_cancel解除]绑定
  304. // }
  305. // else
  306. // {
  307. // jsonBuilder.Append("\"_Cancel\":\"" + "<input type='checkbox' disabled='disabled' id='" + p.Id +
  308. // "_Cancel' value='" + p._Cancel + "' />" + "\","); //[_cancel解除]绑定
  309. // }
  310. // //判断【该页是否有此功能】
  311. // if ("0" != p._Audit.ToString())
  312. // {
  313. // jsonBuilder.Append("\"_Audit\":\"" +
  314. // "<input type='checkbox' onclick='return onCheck(this.id);' id='" + p.Id +
  315. // "_Audit' value='" + p._Audit + "' />" + "\""); //[_audit 审核]绑定
  316. // }
  317. // else
  318. // {
  319. // jsonBuilder.Append("\"_Audit\":\"" + "<input type='checkbox' disabled='disabled' id='" + p.Id +
  320. // "_Audit' value='" + p._Audit + "' />" + "\""); //[_audit 审核]绑定
  321. // }
  322. // jsonBuilder.Append("}");
  323. // jsonBuilder.Append(",");
  324. // }
  325. // }
  326. // jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
  327. // jsonBuilder.Append("]}");
  328. // return jsonBuilder.ToString();
  329. //}
  330. ////------------------------------------------------------------------------
  331. ///// <summary>
  332. ///// 【角色维护】中的【权限列表】 to Gridjson 数据
  333. ///// </summary>
  334. ///// <param name="list"></param>
  335. ///// <param name="currentPage"></param>
  336. ///// <param name="totalPages"></param>
  337. ///// <param name="rows"></param>
  338. ///// <returns></returns>
  339. //public static string powList2GridjsonForView(object[] list, int currentPage, int totalPages, int rows)
  340. //{
  341. // var jsonBuilder = new StringBuilder();
  342. // jsonBuilder.Append("{\"page\":" + currentPage + ",\"total\":" + totalPages + ",\"records\":" + list.Length +
  343. // ",\"rows\"");
  344. // jsonBuilder.Append(":[");
  345. // foreach (object rowData in list)
  346. // {
  347. // if (null != rowData)
  348. // {
  349. // var p = (Permission) rowData;
  350. // jsonBuilder.Append("{");
  351. // jsonBuilder.Append("\"Id\":\"" + p.Id + "\","); //[ID]绑定
  352. // jsonBuilder.Append("\"_Name\":\"" + p._Name + "\","); //[Name]绑定
  353. // jsonBuilder.Append("\"_Page\":\"" + p._Page + "\","); //[page]绑定
  354. // //判断【该页是否有此功能】
  355. // if ("0" != p._Read.ToString())
  356. // {
  357. // jsonBuilder.Append("\"_Read\":\"" +
  358. // "<input type='checkbox' onclick='return onCheck(this.id);' id='" +
  359. // p.Id + "Read' value='" + p._Read + "' checked=checked disabled='disabled' />" +
  360. // "\","); //[_read]绑定
  361. // }
  362. // else
  363. // {
  364. // jsonBuilder.Append("\"_Read\":\"" +
  365. // "<input type='checkbox'onclick='return onCheck(this.id);' disabled='disabled' id='" +
  366. // p.Id + "Read' value='" + p._Read + "' />" + "\","); //[_read]绑定
  367. // }
  368. // //判断【该页是否有此功能】
  369. // if ("0" != p._Write.ToString())
  370. // {
  371. // jsonBuilder.Append("\"_Write\":\"" +
  372. // "<input type='checkbox'onclick='return onCheck(this.id);' onclick='onCheck();' id='" +
  373. // p.Id + "Write' value='" + p._Write +
  374. // "' checked=checked disabled='disabled' />" + "\","); //[_write]绑定
  375. // }
  376. // else
  377. // {
  378. // jsonBuilder.Append("\"_Write\":\"" +
  379. // "<input type='checkbox'onclick='return onCheck(this.id);' disabled='disabled' id='" +
  380. // p.Id + "Write' value='" + p._Write + "' />" + "\","); //[_write]绑定
  381. // }
  382. // //判断【该页是否有此功能】
  383. // if ("0" != p._Delete.ToString())
  384. // {
  385. // jsonBuilder.Append("\"_Delete\":\"" +
  386. // "<input type='checkbox' checked=checked disabled='disabled' onclick='return onCheck(this.id);' onclick='onCheck();' id='" +
  387. // p.Id + "Delete' value='" + p._Delete + "' />" + "\","); //[_delte]绑定
  388. // }
  389. // else
  390. // {
  391. // jsonBuilder.Append("\"_Delete\":\"" + "<input type='checkbox' disabled='disabled' id='" + p.Id +
  392. // "Delete' value='" + p._Delete + "' />" + "\","); //[_delete]绑定
  393. // }
  394. // //判断【该页是否有此功能】
  395. // if ("0" != p._Update.ToString())
  396. // {
  397. // jsonBuilder.Append("\"_Update\":\"" +
  398. // "<input type='checkbox' checked=checked disabled='disabled' onclick='return onCheck(this.id);' onclick='onCheck();' id='" +
  399. // p.Id + "Update' value='" + p._Update + "' />" + "\","); //[_update]绑定
  400. // }
  401. // else
  402. // {
  403. // jsonBuilder.Append("\"_Update\":\"" + "<input type='checkbox' disabled='disabled' id='" + p.Id +
  404. // "Update' value='" + p._Update + "' />" + "\","); //[_update]绑定
  405. // }
  406. // //判断【该页是否有此功能】
  407. // if ("0" != p._Cancel.ToString())
  408. // {
  409. // jsonBuilder.Append("\"_Cancel\":\"" +
  410. // "<input type='checkbox' checked=checked disabled='disabled' onclick='return onCheck(this.id);' id='" +
  411. // p.Id +
  412. // "Cancel' value='" + p._Cancel + "' />" + "\","); //[_cancel解除]绑定
  413. // }
  414. // else
  415. // {
  416. // jsonBuilder.Append("\"_Cancel\":\"" + "<input type='checkbox' disabled='disabled' id='" + p.Id +
  417. // "Cancel' value='" + p._Cancel + "' />" + "\","); //[_cancel解除]绑定
  418. // }
  419. // //判断【该页是否有此功能】
  420. // if ("0" != p._Audit.ToString())
  421. // {
  422. // jsonBuilder.Append("\"_Audit\":\"" +
  423. // "<input type='checkbox' checked=checked disabled='disabled' onclick='return onCheck(this.id);' id='" +
  424. // p.Id +
  425. // "Audit' value='" + p._Audit + "' />" + "\""); //[_audit 审核]绑定
  426. // }
  427. // else
  428. // {
  429. // jsonBuilder.Append("\"_Audit\":\"" + "<input type='checkbox' disabled='disabled' id='" + p.Id +
  430. // "Audit' value='" + p._Audit + "' />" + "\""); //[_audit 审核]绑定
  431. // }
  432. // jsonBuilder.Append("}");
  433. // jsonBuilder.Append(",");
  434. // }
  435. // }
  436. // jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
  437. // jsonBuilder.Append("]}");
  438. // return jsonBuilder.ToString();
  439. //}
  440. //------------------------------------------------------------------------
  441. /// <summary>
  442. /// JSON转对象
  443. /// </summary>
  444. /// <typeparam name="T"></typeparam>
  445. /// <param name="json">The json.</param>
  446. /// <returns>obj</returns>
  447. public static T ToObject<T>(string json)
  448. {
  449. try
  450. {
  451. var js = new JavaScriptSerializer();
  452. return js.Deserialize<T>(json);
  453. }
  454. catch (Exception ex)
  455. {
  456. throw ex;
  457. }
  458. }
  459. /// <summary>
  460. /// JSON转对象
  461. /// </summary>
  462. /// <typeparam name="T"></typeparam>
  463. /// <param name="j">The j.</param>
  464. /// <returns>obj[]对象集合</returns>
  465. public static object[] JSONToArray<T>(string j)
  466. {
  467. try
  468. {
  469. var js = new JavaScriptSerializer();
  470. return js.DeserializeObject(j) as object[];
  471. }
  472. catch (Exception ex)
  473. {
  474. throw ex;
  475. }
  476. }
  477. #region DataSet 转 JSON
  478. /// <summary>
  479. /// DataTable转换成Json格式
  480. /// </summary>
  481. /// <param name="dt">DataTable</param>
  482. /// <returns>JSON字符串</returns>
  483. /// 格式如:{"rows":[{"id":0,"cell":["address":"china","depName":"testName","user":"jayjay","depId":"123"]},....]}
  484. public static string DataTable2Json(DataTable dt)
  485. {
  486. var jsonBuilder = new StringBuilder();
  487. jsonBuilder.Append("{\"rows\":[");
  488. for (int i = 0; i < dt.Rows.Count; i++)
  489. {
  490. jsonBuilder.Append("{");
  491. for (int j = 0; j < dt.Columns.Count; j++)
  492. {
  493. jsonBuilder.Append("\"" + dt.Columns[j].ColumnName + "\"" + ":" + "\"" + dt.Rows[i][j] + "\"");
  494. jsonBuilder.Append(",");
  495. }
  496. jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
  497. jsonBuilder.Append("},");
  498. }
  499. jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
  500. jsonBuilder.Append("]");
  501. jsonBuilder.Append("}");
  502. return jsonBuilder.ToString();
  503. }
  504. /// <summary>
  505. /// DataSet 转 JSON
  506. /// </summary>
  507. /// <param name="ds">DataSet</param>
  508. /// <returns>JSON字符串</returns>
  509. public static string DataSet2Json(DataSet ds)
  510. {
  511. var strJson = new StringBuilder();
  512. foreach (DataTable dt in ds.Tables)
  513. {
  514. strJson.Append("{\"");
  515. strJson.Append(dt.TableName);
  516. strJson.Append("\":");
  517. strJson.Append(DataTable2Json(dt));
  518. strJson.Append("}");
  519. }
  520. return strJson.ToString();
  521. }
  522. /// <summary>
  523. /// DataTable转GridJson
  524. /// </summary>
  525. /// <param name="dt">DataTable</param>
  526. /// <returns>Grid json字符串</returns>
  527. public static string DTToGridJson(DataTable dt)
  528. {
  529. var jsonBuilder = new StringBuilder();
  530. jsonBuilder.Append("{\"page\":1,\"total\":" + (dt.Rows.Count / 10) + ",\"records\":" + dt.Rows.Count +
  531. ",\"rows\"");
  532. jsonBuilder.Append(":[");
  533. for (int i = 0; i < dt.Rows.Count; i++)
  534. {
  535. jsonBuilder.Append("{");
  536. for (int j = 0; j < dt.Columns.Count; j++)
  537. {
  538. jsonBuilder.Append("\"" + dt.Columns[j].ColumnName + "\"" + ":" + "\"" + dt.Rows[i][j] + "\"");
  539. jsonBuilder.Append(",");
  540. }
  541. jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
  542. jsonBuilder.Append("},");
  543. }
  544. jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
  545. jsonBuilder.Append("]");
  546. jsonBuilder.Append("}");
  547. return jsonBuilder.ToString();
  548. }
  549. public static string DTToGridJson(DataTable dt, int currentPage, int totalPages, int pageRecorder)
  550. {
  551. var jsonBuilder = new StringBuilder();
  552. jsonBuilder.Append("{\"page\":" + currentPage + ",\"total\":" +
  553. Math.Ceiling(totalPages / double.Parse(pageRecorder.ToString())) + ",\"records\":" +
  554. totalPages +
  555. ",\"rows\"");
  556. jsonBuilder.Append(":[");
  557. for (int i = 0; i < dt.Rows.Count; i++)
  558. {
  559. jsonBuilder.Append("{");
  560. for (int j = 0; j < dt.Columns.Count; j++)
  561. {
  562. jsonBuilder.Append("\"" + dt.Columns[j].ColumnName + "\"" + ":" + "\"" + dt.Rows[i][j] + "\"");
  563. jsonBuilder.Append(",");
  564. }
  565. jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
  566. jsonBuilder.Append("},");
  567. }
  568. if (',' == jsonBuilder[jsonBuilder.Length - 1])
  569. {
  570. jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
  571. }
  572. jsonBuilder.Append("]");
  573. jsonBuilder.Append("}");
  574. return jsonBuilder.ToString();
  575. }
  576. #endregion
  577. }
  578. }