用DataContractJsonSerializer做json序列化时,转义字符怎么也被序列化?比如(student stu=new student();stu.add="湖北\\武汉";
stu被序列化后的结果为{add:"湖北\\\\武汉"}, 怎么让它序列化后的是{add:"湖北\\武汉"}?请问高手??

解决方案 »

  1.   

            Student student = new Student();
            student.Add = "湖北\\武汉";
            JavaScriptSerializer json = new JavaScriptSerializer();
            Response.Write(json.Serialize(student));
    //{"Add":"湖北\\武汉"} 
      

  2.   


    //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":"湖北\\武汉"} 
      

  3.   


    若student.Add = "湖北\\武汉"; 字符串本身(也就是直接打印)是 湖北\武汉 
    但序列化后字符串打印出来则是: 湖北\\武汉
      

  4.   

    我想要的是序列化后是:{Add:"湖北\\武汉"}
      

  5.   

    或者你可以用另外字符替换
            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('-', '\\'));
      

  6.   

    哦,问题是“\”这个你可以运行吗?多了一个的话就去掉一个
    Student student = new Student();
                student.UNAME = "张三\\李四";            JavaScriptSerializer json = new JavaScriptSerializer();
                Response.Write(json.Serialize(student).Replace(@"\\", @"#").Replace("#", @"\"));
      

  7.   

    换个很特殊的符号。呵呵  {zheli}
      

  8.   

    MVC里返回的JsonReslut所序列化的对象中的"\\"可以做到还是两杠("\\"),为什么我们自己写的序列化不行呢?JsonResult的原理又是怎么样的呢?
      

  9.   

    JavaScriptSerializer json = new JavaScriptSerializer();
    json.Serialize(student);
      

  10.   


    JSON中\本身就是转义,用两个来表示实际的一个即"\\"或者@"\",单独写一个\则是JS和C#中的转义符
      

  11.   

    stu.Add=”湖北\/武汉“;stu.Name=“张三";最后序列化后的json是:{Name:"张三",Add:"湖北\\//武汉"},怎么才能得到的json是{Name:"张三",Add:"湖北/武汉"}
    "\/"在c#中是"/"的转义,但在js中字符串中的"/"是不需要转义的。js中"湖北/武汉"才是C#中"湖北\/武汉"的原形
      

  12.   

    .net的序列化就这个样,有点好心做坏事的感觉,你要嘛自己序列化,要嘛把多余的斜杠替换掉。
      

  13.   

     string strr = @"张三\\李四";
     Response.Write(HttpUtility.UrlEncode(strr));alert(decodeURI('%e5%bc%a0%e4%b8%89%5c%5c%e6%9d%8e%e5%9b%9b'));