首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

string类型的数据用JSON来表示的有关问题

2013-08-13 
string类型的数据用JSON来表示的问题为什么string类型数据中的特殊字符在JSON里还要再处理一次?我脑袋好乱

string类型的数据用JSON来表示的问题
为什么string类型数据中的特殊字符在JSON里还要再处理一次?
我脑袋好乱啊,想不通为什么还要再处理一次- -,感觉就是对要转义的字符转义了两次- -
static String string2Json(String s) { 
    StringBuilder sb = new StringBuilder(s.length()+20); 
    sb.append('"'); 
    for (int i=0; i<s.length(); i++) { 
        char c = s.charAt(i); 
        switch (c) { 
        case '"': 
            sb.append("\\""); 
            break; 
        case '\\': 
            sb.append("\\\"); 
            break; 
        case '/': 
            sb.append("\\/"); 
            break; 
        case '\b': 
            sb.append("\\b"); 
            break; 
        case '\f': 
            sb.append("\\f"); 
            break; 
        case '\n': 
            sb.append("\\n"); 
            break; 
        case '\r': 
            sb.append("\\r"); 
            break; 
        case '\t': 
            sb.append("\\t"); 
            break; 
        default: 
            sb.append(c); 
        } 
    } 
    sb.append('"'); 


    return sb.toString(); 
 }  javascript?JSON String
[解决办法]
最好的方法是创建一个类,然后直接调用系统方法。

using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Web.Script.Serialization;

public static System.Text.StringBuilder getJsonStr(object o)
        {
            JavaScriptSerializer jss = new JavaScriptSerializer();
            StringBuilder sb = new StringBuilder();
            jss.Serialize(o, sb);
            return sb;
        }

调用:

public void ProcessRequest(HttpContext context)
        {
            string sqlstr = "select top 30 TableKey,姓名,职务,所在 from view_人员信息";
            sqlstr += " where 有效否=1 and (姓名 like @key or 拼音码 like @key or 五笔码 like @key)";
            SqlCommand cmd = new SqlCommand(sqlstr);
            cmd.Parameters.AddWithValue("@key","%"+context.Request["key"]+"%");

            DataTable dt = King.DataBase.SqlServer.GetDataSet(cmd).Tables[0];

            List<UserList> li = new List<UserList>();
            foreach (DataRow dr in dt.Rows)
            {
                UserList ul = new UserList();


                ul.TableKey = dr["TableKey"].ToString();
                ul.姓名 = dr["姓名"].ToString();
                ul.职务 = dr["职务"].ToString();
                ul.所在 = dr["所在"].ToString();
                li.Add(ul);
            }
            context.Response.Write(King.StringOper.getJsonStr(li));
        }
public class UserList
        {
            public string TableKey;
            public string 姓名;
            public string 职务;
            public string 所在;
        }

热点排行