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 所在;
}