解析 JSON 时遇到了预期之外的字符 p,一开始我认为是前端问题。
开始调查前端在页面的文本框中输入的是 {"path"} 带上大括号的参数
控制台前端解析是 {/"path"/}发现没有问题
调查后端发现有一个验证api的方法被改动了调用的是StringEscapeUtils.unescapeJava()
unescapeJava() 方法改变了原始字符串的格式,使其不再是有效的 JSON。
StringEscapeUtils.unescapeJava() 方法通常用于将 Java 字符串字面量中的转义字符转换为它们所代表的字符。例如,它会将 "\\n" 转换为 "\n"。
如果你的 JSON 字符串包括了像 Java 转义序列这样的内容,在未经处理的情况下,就可能会破坏 JSON 的结构。
结论:前端向后端传输时已经做了转json处理,再经unescapeJava()转化 {/"path"/}就会出现问题。所以要注意unescapeJava()的使用时机并不是所有方法都通用。