DataTable 的 JSON 序列化
随着AJAX,MVC等WEB框架的使用,JavaScript又更多的回到了我们身边。
在JS中我们需要对对象进行JSON序列化通常使用JSON.net, 不过它对DataTable的序列化不能很好的满足的我们的需求,后来在CodeProject发现一个兄弟已经写好了 Convert ASP.NET DataTable to JSON, to use datatable in JAVASCRIPT ,记一下,免得忘记了。
1public string CreateJsonParameters(DataTable dt)
2 {
3 /* /****************************************************************************
4 * Without goingin to the depth of the functioning of this Method, i will try to give an overview
5 * As soon as this method gets a DataTable it starts to convert it into JSON String,
6 * it takes each row and in each row it grabs the cell name and its data.
7 * This kind of JSON is very usefull when developer have to have Column name of the .
8 * Values Can be Access on clien in this way. OBJ.HEAD[0].<ColumnName>
9 * NOTE: One negative point. by this method user will not be able to call any cell by its index.
10 * *************************************************************************/
11 StringBuilder JsonString = new StringBuilder();
12 //Exception Handling
13 if (dt != null && dt.Rows.Count > 0)
14 {
15 JsonString.Append("{ ");
16 JsonString.Append("\"Head\":[ ");
17 for (int i = 0; i < dt.Rows.Count; i++)
18 {
19 JsonString.Append("{ ");
20 for (int j = 0; j < dt.Columns.Count; j++)
21 {
22 if (j < dt.Columns.Count - 1)
23 {
24 JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\",");
25 }
26 else if (j == dt.Columns.Count - 1)
27 {
28 JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\"");
29 }
30 }
31 /*end Of String*/
32 if (i == dt.Rows.Count - 1)
33 {
34 JsonString.Append("} ");
35 }
36 else
37 {
38 JsonString.Append("}, ");
39 }
40 }
41 JsonString.Append("]}");
42 return JsonString.ToString();
43 }
44 else
45 {
46 return null;
47 }
48 }
2 {
3 /* /****************************************************************************
4 * Without goingin to the depth of the functioning of this Method, i will try to give an overview
5 * As soon as this method gets a DataTable it starts to convert it into JSON String,
6 * it takes each row and in each row it grabs the cell name and its data.
7 * This kind of JSON is very usefull when developer have to have Column name of the .
8 * Values Can be Access on clien in this way. OBJ.HEAD[0].<ColumnName>
9 * NOTE: One negative point. by this method user will not be able to call any cell by its index.
10 * *************************************************************************/
11 StringBuilder JsonString = new StringBuilder();
12 //Exception Handling
13 if (dt != null && dt.Rows.Count > 0)
14 {
15 JsonString.Append("{ ");
16 JsonString.Append("\"Head\":[ ");
17 for (int i = 0; i < dt.Rows.Count; i++)
18 {
19 JsonString.Append("{ ");
20 for (int j = 0; j < dt.Columns.Count; j++)
21 {
22 if (j < dt.Columns.Count - 1)
23 {
24 JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\",");
25 }
26 else if (j == dt.Columns.Count - 1)
27 {
28 JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\"");
29 }
30 }
31 /*end Of String*/
32 if (i == dt.Rows.Count - 1)
33 {
34 JsonString.Append("} ");
35 }
36 else
37 {
38 JsonString.Append("}, ");
39 }
40 }
41 JsonString.Append("]}");
42 return JsonString.ToString();
43 }
44 else
45 {
46 return null;
47 }
48 }