Newtonsoft.Json.JsonReaderException:“Bad JSON escape sequence: \*. Path '****', line *, position **.”

发布时间 2023-12-20 10:20:11作者: 十三年新*

测试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/'】

这样就可以正常转换了。