1 /// <summary>
2 /// 将DataTable轉為Json字元串
3 /// </summary>
4 /// <param name="dt"></param>
5 /// <returns></returns>
6 public static string DataTable2Json(DataTable dt)
7 {
8
9 if (dt.Rows.Count == 0)
10 {
11 return "";
12 }
13
14 StringBuilder jsonBuilder = new StringBuilder();
15 // jsonBuilder.Append("{");
16 //jsonBuilder.Append(dt.TableName.ToString());
17 jsonBuilder.Append("[");//轉換成多個model的形式
18 for (int i = 0; i < dt.Rows.Count; i++)
19 {
20 jsonBuilder.Append("{");
21 for (int j = 0; j < dt.Columns.Count; j++)
22 {
23 //保留兩位
24 if (dt.Columns[j].DataType.ToString() == "System.Decimal")
25 {
26
27 jsonBuilder.Append("\"");
28 jsonBuilder.Append(dt.Columns[j].ColumnName);
29 jsonBuilder.Append("\":\"");
30 try
31 {
32 jsonBuilder.Append(Convert.ToDecimal(dt.Rows[i][j]).ToString("f2"));
33
34 }
35 catch (Exception)
36 {
37
38 jsonBuilder.Append(0);
39 }
40 jsonBuilder.Append("\",");
41 }
42 //時間類型則變形
43 else if (dt.Columns[j].DataType.ToString() == "System.DateTime")
44 {
45 jsonBuilder.Append("\"");
46 jsonBuilder.Append(dt.Columns[j].ColumnName);
47 jsonBuilder.Append("\":\"");
48 try
49 {
50 jsonBuilder.Append(Convert.ToDateTime(dt.Rows[i][j]).ToString("yyyy/MM/dd HH:mm:ss"));
51 }
52 catch (Exception)
53 {
54 jsonBuilder.Append("");
55 }
56 jsonBuilder.Append("\",");
57 }
58 else
59 {
60 jsonBuilder.Append("\"");
61 jsonBuilder.Append(dt.Columns[j].ColumnName);
62 jsonBuilder.Append("\":\"");
63
64 try
65 {
66 jsonBuilder.Append(dt.Rows[i][j].ToString());
67
68 }
69 catch (Exception)
70 {
71
72 jsonBuilder.Append("");
73 }
74 jsonBuilder.Append("\",");
75 }
76
77 }
78 jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
79 jsonBuilder.Append("},");
80 }
81 jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
82 jsonBuilder.Append("]");
83 // jsonBuilder.Append("}");
84
85 return Regex.Replace(jsonBuilder.ToString(), @"[\r\n]", "");
86 }
NetAnalyzer下載下傳位址
NetAnalzyer交流群:39753670 (PS 隻提供交流平台,群主基本不說話^_^)
[轉載請保留作者資訊 作者:馮天文 ]