在工作中遇到这么一种情况,第三方系统每日会推送一个日终文件到我们的后台系统,这边需要对文件内容进行解析入库。
文件内容有一个字段是“备注” Narratives,即客户输入的内容,Narratives可能会有换行符的情况。
后台需要处理\n以及\的录入逻辑。
后端解析日终文件入库时按照如下逻辑替换Narratives字段中的换行符入到数据库
| 用户输入 | 文件内容 |
Logic 1 | (換行) | \n |
Logic 2 | \ | \\ |
Example 1 | \n | \\n |
Example 2 | \ \ | \\\n\\ |
Example 3 | n\n n\n | n\\n\nn\\n |
客户输入换行符,文件内容是\n,解析成String,\n会被转义成字符串\\n,同样的,客户输入\,文件提供的内容会变成\\,解析成String会被转义成字符串\\\\,最后进入到数据库就是字符串\n和字符串\\。
这时我们需要处理多出的转义符\,将其忽略掉。
使用StringEscapeUtils.unescapeJava(String str) 将字符串中的转义字符去掉
最后进到数据库就是换行符和\
PS. 反转义方法StringEscapeUtils.scapeJava(String str)
参考文献:关于json数据中的多反斜杆转译--StringEscapeUtils.unescapeJava(踩过的坑) - 皇问天 - 博客园