测试Json字符串msg:
{"field1":"\\\9527\","field2":"\\\\\data\\","field3":"\r\n\\\G\\\d\\\","field4":"TEST TEST\\1TEST\\\GTEST\\\\GTEST2\\\\\TEST3\\\\\\TESTD"}
可以看到Json中充斥大量的\,之前一直用的是下面代码处理:
string pattern = @"(\\[^bfrnt\\/'\""])"; msg = Regex.Replace(msg, pattern, "\\$1"); dynamic js1 = JsonConvert.DeserializeObject(msg);
逻辑是将反斜杠“\” 和“非【bfrnt\/'"】的字符”前面再加一个加上\处理。
但是遇到上面的例子,执行的时候还是抛出了异常:
Newtonsoft.Json.JsonReaderException:“Bad JSON escape sequence: \9. Path 'field1', line 1, position 15.”
于是我稍微修改了一下正则:
string pattern2 = @"(\\(?![bfrnt/']))"; msg = Regex.Replace(msg, pattern2, "\\$1"); dynamic js2 = JsonConvert.DeserializeObject(msg);
逻辑是在反斜杠“\”前面再加一个加上\处理,但是\的后面不能为【bfrnt/'】
这样就可以正常转换了。
标签:Newtonsoft,sequence,JsonReaderException,Json,escape,msg,bfrnt From: https://www.cnblogs.com/yellow3gold/p/17915901.html