序列化为json时转义字符的序列化 用DataContractJsonSerializer做json序列化时,转义字符怎么也被序列化?比如(student stu=new student();stu.add="湖北\\武汉";stu被序列化后的结果为{add:"湖北\\\\武汉"}, 怎么让它序列化后的是{add:"湖北\\武汉"}?请问高手?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Student student = new Student(); student.Add = "湖北\\武汉"; JavaScriptSerializer json = new JavaScriptSerializer(); Response.Write(json.Serialize(student));//{"Add":"湖北\\武汉"} //lz是断点的时候查看的?那是对它的转义,你直接输出来看看。 Student student = new Student(); student.Add = "湖北\\武汉"; DataContractJsonSerializer json = new DataContractJsonSerializer(student.GetType()); MemoryStream ms = new MemoryStream(); json.WriteObject(ms, student); string result = Encoding.UTF8.GetString(ms.ToArray()); Response.Write(result);//{"Add":"湖北\\武汉"} 若student.Add = "湖北\\武汉"; 字符串本身(也就是直接打印)是 湖北\武汉 但序列化后字符串打印出来则是: 湖北\\武汉 我想要的是序列化后是:{Add:"湖北\\武汉"} 或者你可以用另外字符替换 Student student = new Student(); student.Add = "湖北-武汉"; DataContractJsonSerializer json = new DataContractJsonSerializer(student.GetType()); MemoryStream ms = new MemoryStream(); json.WriteObject(ms, student); string result = Encoding.UTF8.GetString(ms.ToArray()); Response.Write(result.Replace('-', '\\')); 哦,问题是“\”这个你可以运行吗?多了一个的话就去掉一个Student student = new Student(); student.UNAME = "张三\\李四"; JavaScriptSerializer json = new JavaScriptSerializer(); Response.Write(json.Serialize(student).Replace(@"\\", @"#").Replace("#", @"\")); 换个很特殊的符号。呵呵 {zheli} MVC里返回的JsonReslut所序列化的对象中的"\\"可以做到还是两杠("\\"),为什么我们自己写的序列化不行呢?JsonResult的原理又是怎么样的呢? JavaScriptSerializer json = new JavaScriptSerializer();json.Serialize(student); JSON中\本身就是转义,用两个来表示实际的一个即"\\"或者@"\",单独写一个\则是JS和C#中的转义符 stu.Add=”湖北\/武汉“;stu.Name=“张三";最后序列化后的json是:{Name:"张三",Add:"湖北\\//武汉"},怎么才能得到的json是{Name:"张三",Add:"湖北/武汉"}"\/"在c#中是"/"的转义,但在js中字符串中的"/"是不需要转义的。js中"湖北/武汉"才是C#中"湖北\/武汉"的原形 .net的序列化就这个样,有点好心做坏事的感觉,你要嘛自己序列化,要嘛把多余的斜杠替换掉。 string strr = @"张三\\李四"; Response.Write(HttpUtility.UrlEncode(strr));alert(decodeURI('%e5%bc%a0%e4%b8%89%5c%5c%e6%9d%8e%e5%9b%9b')); 关于DropDownList 绑定数据~~~~~~~~~ 求助:权限管理 Window2003下可否安装asp.net1.0? js调用ocx函数的问题:类型不匹配 asp.net如何实现产品的无限级分类? 哪里有在ASP.NET中可用于显示图像的ActiveX控件下载或购买? 将数据导出到excel的问题 為什麼treeview樹型結構在瀏覽器中不能正常顯示 求救!!下周就自学考试了,我的身份证丢了,怎么办 who帮我看看为什么运行错误?【贴源码】 请高手写个YYYYMMDD八位日期格式的正则表达式??感谢万分。 搜索结果显示第一页正常,但是查询第二页就出现问题
student.Add = "湖北\\武汉";
JavaScriptSerializer json = new JavaScriptSerializer();
Response.Write(json.Serialize(student));
//{"Add":"湖北\\武汉"}
//lz是断点的时候查看的?那是对它的转义,你直接输出来看看。
Student student = new Student();
student.Add = "湖北\\武汉";
DataContractJsonSerializer json = new DataContractJsonSerializer(student.GetType());
MemoryStream ms = new MemoryStream();
json.WriteObject(ms, student);
string result = Encoding.UTF8.GetString(ms.ToArray());
Response.Write(result);
//{"Add":"湖北\\武汉"}
若student.Add = "湖北\\武汉"; 字符串本身(也就是直接打印)是 湖北\武汉
但序列化后字符串打印出来则是: 湖北\\武汉
Student student = new Student();
student.Add = "湖北-武汉";
DataContractJsonSerializer json = new DataContractJsonSerializer(student.GetType());
MemoryStream ms = new MemoryStream();
json.WriteObject(ms, student);
string result = Encoding.UTF8.GetString(ms.ToArray());
Response.Write(result.Replace('-', '\\'));
Student student = new Student();
student.UNAME = "张三\\李四"; JavaScriptSerializer json = new JavaScriptSerializer();
Response.Write(json.Serialize(student).Replace(@"\\", @"#").Replace("#", @"\"));
json.Serialize(student);
JSON中\本身就是转义,用两个来表示实际的一个即"\\"或者@"\",单独写一个\则是JS和C#中的转义符
"\/"在c#中是"/"的转义,但在js中字符串中的"/"是不需要转义的。js中"湖北/武汉"才是C#中"湖北\/武汉"的原形
Response.Write(HttpUtility.UrlEncode(strr));alert(decodeURI('%e5%bc%a0%e4%b8%89%5c%5c%e6%9d%8e%e5%9b%9b'));