NewtonJson序列化中转义斜杠和多余引号的处理

两个问题:

  • 中文乱码;
  • 出现转义斜杠

字符串如下:

{\”state\":0,\"msglist\":[{\"IMTime\":\"2018-06-06  21:32:28\",\"LineName\":\"探针\",\"IMMsg\":\"收到测试任务\"},{\"IMTime\":\"2018-06-06  21:32:28\”,\”LineName\”:\”中心探针\”,\”IMMsg\":\"收到测试任务,即将开始测试!\"}]}"

中文乱码问题

  • 中文乱码肯定是编码格式的问题,转换成uft-8试试
WebClient web = new WebClient();  
web.Encoding = System.Text.Encoding.GetEncoding("GB2312");  
string result =Encoding.UTF8.GetString(web.DownloadData(ConnConfig.WebAPI + "/ImmediateTest/" + TaskName));


转义斜杠问题

有两种可能

  1. 序列化的导致

    排除此问题的关键在看序列化后的字符串是否带有转义字符

  2. 网络传输导致的编码问题
    如果1排除掉了,那就是2有问题
    经验证,正是因为网络传输导致了多余的转义字符串,转义字符串的删除方法如下(很显然效率很低,如有更高效的方法,请多指教):

StringBuilder sb = new StringBuilder();
string[] parts = result.Split(new char[] { ' ', '\n', '\t', '\r', '\f', '\v', '\\' }, StringSplitOptions.RemoveEmptyEntries);
int size = parts.Length;
for (int i = 0; i < size; i++)
    sb.AppendFormat("{0}", parts[i]);
result = sb.ToString();


你可能感兴趣的:(C#)