JSON格式互轉集合

来源:http://www.cnblogs.com/zhangpengnike/archive/2016/02/19/5200781.html
-Advertisement-
Play Games

在工作中我們經常會遇到格式轉換的問題,有的時候是將JSON轉換成DataTable、DataSet或是List等,也有可能將DataTable、DataSet或是List轉換成JSON的,抽了點時間把這些方法整合了一下,希望對大家有所幫助,如果有什麼問題請指出來,共同探討。 代碼: 1 using


  在工作中我們經常會遇到格式轉換的問題,有的時候是將JSON轉換成DataTable、DataSet或是List等,也有可能將DataTable、DataSet或是List轉換成JSON的,抽了點時間把這些方法整合了一下,希望對大家有所幫助,如果有什麼問題請指出來,共同探討。

代碼:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Web;
  5 using System.Text;
  6 using System.Data;
  7 using System.Data.Common;
  8 using System.Collections;
  9 using System.Reflection;
 10 
 11 namespace BJYX.WEB.Public
 12 {
 13     public class Creat_Json
 14     {
 15         public Creat_Json()
 16         {
 17             //
 18             // TODO: 在此處添加構造函數邏輯
 19             //
 20         }
 21 
 22         public static string DataTable2Json(System.Data.DataTable dt)
 23         {
 24             System.Text.StringBuilder jsonBuilder = new System.Text.StringBuilder();
 25             jsonBuilder.Append("{");
 26             jsonBuilder.AppendFormat("\"total\":{0}, ", dt.Rows.Count);
 27             jsonBuilder.Append("\"rows\":[ ");
 28             for (int i = 0; i < dt.Rows.Count; i++)
 29             {
 30                 jsonBuilder.Append("{");
 31                 for (int j = 0; j < dt.Columns.Count; j++)
 32                 {
 33                     jsonBuilder.Append("\"");
 34                     jsonBuilder.Append(dt.Columns[j].ColumnName);
 35                     jsonBuilder.Append("\":\"");
 36                     jsonBuilder.Append(dt.Rows[i][j].ToString().Replace("\\", "\\\\").Replace("'", "&apos;").Replace("\t", " ").Replace("\r", " ").Replace("\n", "<br/>").Replace("\"", "&quot;"));
 37                     jsonBuilder.Append("\",");
 38                 }
 39                 jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
 40                 jsonBuilder.Append("},");
 41             }
 42             jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
 43             jsonBuilder.Append("]");
 44             jsonBuilder.Append("}");
 45             return jsonBuilder.ToString();
 46         }
 47         public static string DataTable2Json(System.Data.DataTable dt, int count)
 48         {
 49             System.Text.StringBuilder jsonBuilder = new System.Text.StringBuilder();
 50             jsonBuilder.Append("{");
 51             jsonBuilder.AppendFormat("\"total\":{0}, ", count);
 52             jsonBuilder.Append("\"rows\":[ ");
 53             for (int i = 0; i < dt.Rows.Count; i++)
 54             {
 55                 jsonBuilder.Append("{");
 56                 for (int j = 0; j < dt.Columns.Count; j++)
 57                 {
 58                     jsonBuilder.Append("\"");
 59                     jsonBuilder.Append(dt.Columns[j].ColumnName);
 60                     jsonBuilder.Append("\":\"");
 61                     jsonBuilder.Append(dt.Rows[i][j].ToString().Replace("\\", "\\\\").Replace("'", "&apos;").Replace("\t", " ").Replace("\r", " ").Replace("\n", "<br/>").Replace("\"", "&quot;"));
 62                     jsonBuilder.Append("\",");
 63                 }
 64                 jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
 65                 jsonBuilder.Append("},");
 66             }
 67             jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
 68             jsonBuilder.Append("]");
 69             jsonBuilder.Append("}");
 70             return jsonBuilder.ToString();
 71         }
 72         public static string DataTableToJson(System.Data.DataTable dt)
 73         {
 74             StringBuilder Json = new StringBuilder();
 75             Json.Append("[");
 76             if (dt.Rows.Count > 0)
 77             {
 78                 for (int i = 0; i < dt.Rows.Count; i++)
 79                 {
 80                     Json.Append("{");
 81                     for (int j = 0; j < dt.Columns.Count; j++)
 82                     {
 83                         Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":\"" + dt.Rows[i][j].ToString().Replace("\\", "\\\\").Replace("'", "&apos;").Replace("\t", " ").Replace("\r", " ").Replace("\n", "<br/>").Replace("\"", "&quot;") + "\"");
 84                         if (j < dt.Columns.Count - 1)
 85                         {
 86                             Json.Append(",");
 87                         }
 88                     }
 89                     Json.Append("}");
 90                     if (i < dt.Rows.Count - 1)
 91                     {
 92                         Json.Append(",");
 93                     }
 94                 }
 95             }
 96             Json.Append("]");
 97             return Json.ToString().Replace("\\", "\\\\").Replace("\'", "\\\'").Replace("\t", " ").Replace("\r", " ").Replace("\n", "<br/>");//.Replace("\"", "'"); ;
 98         }
 99 
100         /// <summary>
101         /// Table to JSON By FlexGrid
102         /// </summary>
103         /// <param name="ds"></param>
104         /// <param name="page"></param>
105         /// <returns></returns>
106         public static string DataTableToJson(System.Data.DataTable dt, int page, int total)
107         {
108             StringBuilder jsonStr = new StringBuilder();
109             jsonStr.Append("{");
110             jsonStr.Append("\"page\":" + page + ",");
111             jsonStr.Append("\"total\":" + total + ",");
112             jsonStr.Append("\"rows\":");
113             jsonStr.Append("[");
114 
115             foreach (System.Data.DataRow dr in dt.Rows)
116             {
117                 jsonStr.Append("{");
118 
119                 foreach (System.Data.DataColumn dc in dt.Columns)
120                 {
121                     jsonStr.Append("\"");
122                     jsonStr.Append(dc.ColumnName);
123                     jsonStr.Append("\"");
124                     jsonStr.Append(":");
125 
126                     jsonStr.Append("\"");
127                     jsonStr.Append(dr[dc].ToString().Trim());
128                     jsonStr.Append("\" ,");
129                 }
130 
131                 jsonStr.Remove(jsonStr.Length - 1, 1);
132                 jsonStr.Append("}");
133                 jsonStr.Append(",");
134             }
135             if (dt.Rows.Count > 0)
136             {
137                 jsonStr.Remove(jsonStr.Length - 1, 1);
138             }
139             jsonStr.Append("]");
140             jsonStr.Append("}");
141 
142             return jsonStr.ToString();
143         }
144 
145         /// <summary>   
146         /// List轉成json    
147         /// </summary>   
148         /// <typeparam name="T"></typeparam>   
149         /// <param name="jsonName"></param>   
150         /// <param name="list"></param>   
151         /// <returns></returns>   
152         public static string ListToJson<T>(IList<T> list, string jsonName)
153         {
154             StringBuilder Json = new StringBuilder();
155             if (string.IsNullOrEmpty(jsonName))
156                 jsonName = list[0].GetType().Name;
157             Json.Append("{\"" + jsonName + "\":[");
158             if (list.Count > 0)
159             {
160                 for (int i = 0; i < list.Count; i++)
161                 {
162                     T obj = Activator.CreateInstance<T>();
163                     PropertyInfo[] pi = obj.GetType().GetProperties();
164                     Json.Append("{");
165                     for (int j = 0; j < pi.Length; j++)
166                     {
167                         Type type = pi[j].GetValue(list[i], null).GetType();
168                         Json.Append("\"" + pi[j].Name.ToString() + "\":" + StringFormat(pi[j].GetValue(list[i], null).ToString(), type));
169 
170                         if (j < pi.Length - 1)
171                         {
172                             Json.Append(",");
173                         }
174                     }
175                     Json.Append("}");
176                     if (i < list.Count - 1)
177                     {
178                         Json.Append(",");
179                     }
180                 }
181             }
182             Json.Append("]}");
183             return Json.ToString();
184         }
185 
186         /// <summary>   
187         /// List轉成json    
188         /// </summary>   
189         /// <typeparam name="T"></typeparam>   
190         /// <param name="list"></param>   
191         /// <returns></returns>   
192         public static string ListToJson<T>(IList<T> list)
193         {
194             object obj = list[0];
195             return ListToJson<T>(list, obj.GetType().Name);
196         }
197 
198         /// <summary>    
199         /// 對象轉換為Json字元串    
200         /// </summary>    
201         /// <param name="jsonObject">對象</param>    
202         /// <returns>Json字元串</returns>    
203         public static string ToJson(object jsonObject)
204         {
205             string jsonString = "{";
206             PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties();
207             for (int i = 0; i < propertyInfo.Length; i++)
208             {
209                 object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null);
210                 string value = string.Empty;
211                 if (objectValue is DateTime || objectValue is Guid || objectValue is TimeSpan)
212                 {
213                     value = "'" + objectValue.ToString() + "'";
214                 }
215                 else if (objectValue is string)
216                 {
217                     value = "'" + ToJson(objectValue.ToString()) + "'";
218                 }
219                 else if (objectValue is IEnumerable)
220                 {
221                     value = ToJson((IEnumerable)objectValue);
222                 }
223                 else
224                 {
225                     value = ToJson(objectValue.ToString());
226                 }
227                 jsonString += "\"" + ToJson(propertyInfo[i].Name) + "\":" + value + ",";
228             }
229             jsonString.Remove(jsonString.Length - 1, jsonString.Length);
230             return jsonString + "}";
231         }
232 
233         /// <summary>    
234         /// 對象集合轉換Json    
235         /// </summary>    
236         /// <param name="array">集合對象</param>    
237         /// <returns>Json字元串</returns>    
238         public static string ToJson(IEnumerable array)
239         {
240             string jsonString = "[";
241             foreach (object item in array)
242             {
243                 jsonString += ToJson(item) + ",";
244             }
245             jsonString.Remove(jsonString.Length - 1, jsonString.Length);
246             return jsonString + "]";
247         }
248 
249         /// <summary>    
250         /// 普通集合轉換Json    
251         /// </summary>    
252         /// <param name="array">集合對象</param>    
253         /// <returns>Json字元串</returns>    
254         public static string ToArrayString(IEnumerable array)
255         {
256             string jsonString = "[";
257             foreach (object item in array)
258             {
259                 jsonString = ToJson(item.ToString()) + ",";
260             }
261             jsonString.Remove(jsonString.Length - 1, jsonString.Length);
262             return jsonString + "]";
263         }
264 
265         /// <summary>    
266         /// Datatable轉換為Json    
267         /// </summary>    
268         /// <param name="table">Datatable對象</param>    
269         /// <returns>Json字元串</returns>    
270         public static string ToJson(DataTable dt)
271         {
272             StringBuilder jsonString = new StringBuilder();
273             jsonString.Append("[");
274             DataRowCollection drc = dt.Rows;
275             for (int i = 0; i < drc.Count; i++)
276             {
277                 jsonString.Append("{");
278                 for (int j = 0; j < dt.Columns.Count; j++)
279                 {
280                     string strKey = dt.Columns[j].ColumnName;
281                     string strValue = drc[i][j].ToString();
282                     Type type = dt.Columns[j].DataType;
283                     jsonString.Append("\"" + strKey + "\":");
284                     strValue = StringFormat(strValue, type);
285                     if (j < dt.Columns.Count - 1)
286                     {
287                         jsonString.Append(strValue + ",");
288                     }
289                     else
290                     {
291                         jsonString.Append(strValue);
292                     }
293                 }
294                 jsonString.Append("},");
295             }
296             jsonString.Remove(jsonString.Length - 1, 1);
297             jsonString.Append("]");
298             return jsonString.ToString();
299         }
300 
301         /// <summary>   
302         /// DataTable轉成Json    
303         /// </summary>   
304         /// <param name="jsonName"></param>   
305         /// <param name="dt"></param>   
306         /// <returns></returns>   
307         public static string ToJson(DataTable dt, string jsonName)
308         {
309             StringBuilder Json = new StringBuilder();
310             if (string.IsNullOrEmpty(jsonName))
311                 jsonName = dt.TableName;
312             Json.Append("{\"" + jsonName + "\":[");
313             if (dt.Rows.Count > 0)
314             {
315                 for (int i = 0; i < dt.Rows.Count; i++)
316                 {
317                     Json.Append("{");
318                     for (int j = 0; j < dt.Columns.Count; j++)
319                     {
320                         Type type = dt.Rows[i][j].GetType();
321                         Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + StringFormat(dt.Rows[i][j].ToString(), type));
322                         if (j < dt.Columns.Count - 1)
323                         {
324                             Json.Append(",");
325                         }
326                     }
327                     Json.Append("}");
328                     if (i < dt.Rows.Count - 1)
329                     {
330                         Json.Append(",");
331                     }
332                 }
333             }
334             Json.Append("]}");
335             return Json.ToString();
336         }
337 
338         /// <summary>    
339         /// DataReader轉換為Json    
340         /// </summary>    
341         /// <param name="dataReader">DataReader對象</param>    
342         /// <returns>Json字元串</returns>    
343         public static string ToJson(DbDataReader dataReader)
344         {
345             StringBuilder jsonString = new StringBuilder();
346             jsonString.Append("	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ---恢復內容開始--- RazorEngine模板引擎大大的幫助了我們簡化字元串的拼接與方法的調用,開源之後,現在在簡單的web程式,winform程式,甚至控制台程式都可以利用它來完成。 但如何在使用中調用方法和使用自定義模板呢?來看這樣一個例子 1 string str="hello @Mod
  • 使用Visual Studio寫代碼,經常遇到的一個問題就是切換中文輸入法麻煩,輸入完註釋//,要切換到中文,輸入完引號,要輸入中文,然後還需要切換回來,有沒有? 有時候中文輸入法忽然失效有沒有?明明在中文輸入法狀態下,輸入不了中文,有沒有?
  • 話說有一天,臨近下班無心工作,在網上看各種文章,閱讀到了一篇名為《聊聊大麥網UWP版的首頁頂部圖片聯動效果的實現方法》(傳遞:http://www.cnblogs.com/hippieZhou/p/4755290.html),看到別人評論自己做的產品,頓時來了興趣,閱讀過後,hippieZhou童鞋
  • 近段時間,需要寫一個小功能,就是需要判斷程式是否已經運行。某個程式安裝後,也許被多個用戶運行。那怎樣判斷當前用戶已經運行了此程式了呢?下麵是Insus.NET的做法,就是:《VB.NET WinForm獲取運行程式用戶名》http://www.cnblogs.com/insus/p/5194839.
  • (轉)這裡給大家分享幾個VS版本,都是最終版的,也是中文版的!. Visual Studio 2005:http://pan.baidu.com/s/1c0eudyS Visual Studio 2008:http://pan.baidu.com/s/1i3GJ7pj Visual Studio 2
  • 以下非原創作品,但都是自己看過理解並寫過,記錄下來,以便之後項目的使用或其它用途。 (1)只需要簡單配置單一屬性值: 1 <configuration> 2 <configSections> 3 <!--配置讀取的全名稱--> 4 <section name="simple" type="Confi
  • 使用 HttpResponse 對象 HttpResponse 對象是與 HttpRequest 對象相對應的,用來表示構建中的響應。它當中提供了方法和屬性可供我們自定義響應,有一些在使用 MVC 視圖的時候很少使用到,但是在使用其他組件的時候可能十分有用,比如模塊是處理器。 同 HttpReque
  • HTTP請求工具類,適用於微信伺服器請求,可以自測 代碼; 1 /// <summary> 2 /// HTTP請求工具類 3 /// </summary> 4 public class HttpRequestUtil 5 { 6 #region 請求Url 7 8 #region 請求Url,不發
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...