jqeury eval将字符串转换json的方法

前台页面
  
    
1 $.ajax({
2 type: " post " ,
3 contentType: " application/json " ,
4 url: " ../WebForm1.aspx/GetRightsStr " ,
5 dataType: " json " ,
6 success: function (msg){
7 alert(msg.d);
8 var data = eval( " ( " + msg.d + " ) " );
9 $.each(data.rights, function (index, item){
10 alert(item.RightsName);
11 });
12 },
13 error: function (e, s, d){
14 alert(e);
15 alert(s);
16 alert(d);
17 }
18 });

后台方法:

  
    
1 /// <summary>
2 /// DataTable转成Json
3 /// </summary>
4 /// <param name="jsonName"> josn名称 </param>
5 /// <param name="dt"> 要转换的数据集 </param>
6 /// <returns></returns>
7   public static string DataTableToJson( string jsonName, DataTable dt)
8 {
9 StringBuilder Json = new StringBuilder();
10 Json.Append( " {\" " + jsonName + " \":[ " );
11 if (dt.Rows.Count > 0 )
12 {
13 for ( int i = 0 ; i < dt.Rows.Count; i ++ )
14 {
15 Json.Append( " { " );
16 for ( int j = 0 ; j < dt.Columns.Count; j ++ )
17 {
18 Json.Append( " \" " + dt.Columns[j].ColumnName.ToString() + " \":\" " + dt.Rows[i][j].ToString() + " \" " );
19 if (j < dt.Columns.Count - 1 )
20 {
21 Json.Append( " , " );
22 }
23 }
24 Json.Append( " } " );
25 if (i < dt.Rows.Count - 1 )
26 {
27 Json.Append( " , " );
28 }
29 }
30 }
31 Json.Append( " ]} " );
32 return Json.ToString();
33 }

这个方法是一个将DataTable转换成字符串的方法 。今天遇到的问题是 在 var data = eval("(" + msg.d + ")");
出错误 提示 是 缺少 } 这个方法有用了很多次了 不知道为什么出现这样的错误 。
找了半天,才发现 是数据的问题 在返回的字符串里 有 "\"这个字符, "\"具有转义的作用
所有会出现这个错误,晕啊,真实害苦我了 ,希望大家不要像我这样糊涂。

你可能感兴趣的:(json)