字符串中的转义流氓反斜杠

时间:2019-03-09 15:50:04

标签: java json regex

我在数据库中有一个像这样的JSON字符串:

{"name" : "DROCK", "details" : [{"age" : "23", "degree" : "BE", "Experience" : "worked in a company\6as an intern"}]}

我想删除\字符,但这不是有效的转义字符串。我尝试使用StringEscapeUtil,但在这里没有帮助我。

我在这里使用的代码:

import org.apache.commons.lang.xwork.StringEscapeUtils;

public class JSONEscape {
    public static void main(String args[]) {
        String testString = "{\"name\" : \"DROCK\", \"details\" : [{\"age\" : \"23\", \"degree\" : \"BE\", \"Experience\" : \"worked in a company\6as an intern\"}]}";
        System.out.println(StringEscapeUtils.escapeJava(testString));
    }
}

我应如何转义有效的\字符并删除此类流氓字符。但我想保留有效的转义字符,例如\ n,\ t等。

最后,我想要这样的结果:

{"name" : "DROCK", "details" : [{"age" : "23", "degree" : "BE", "Experience" : "worked in a company6as an intern"}]}

1 个答案:

答案 0 :(得分:0)

如果您想删除JSON字符串中的错误转义序列,那很容易。

String testString = "{\"name\" : \"DROCK\", \"details\" : [\"age\" : \"23\", \"degree\" : \"BE\", \"Experience\" : \"worked in a company\\6as an intern\"]}";
System.out.println(testString.replaceAll("\\([^bfnrt\"\\])", "$1"));

RegEx的字面意思是“在反斜杠后跟无效转义字符的任何地方,都应删除反斜杠”。