Browse Source

转义json中的单引号

master
vito 8 years ago
parent
commit
221e2fa860
  1. 22
      designer_base/src/com/fr/design/extra/PluginTask.java

22
designer_base/src/com/fr/design/extra/PluginTask.java

@ -49,7 +49,7 @@ public class PluginTask<T> extends Task<T> {
@Override
public void process(String s) {
if (StringUtils.isNotBlank(s)) {
updateMessage(changText(s));
updateMessage(trimText(s));
}
}
});
@ -59,20 +59,28 @@ public class PluginTask<T> extends Task<T> {
@Override
protected void done() {
updateMessage(changText(executor.getTaskFinishMessage()));
updateMessage(trimText(executor.getTaskFinishMessage()));
}
/**
* 转换掉一些会造成错误的特殊字符
* 1 ""中的""必须转义
* 2 js字符串中的\n会导致js字符串变成多行,而js字符创不支持多行拼接
* vito:由于使用webEngine.executeScript("(" + callback + ")(\"" + newValue + "\")")
* 执行脚本所以原来规范的json格式也会在拼接字符串后可能抛出参数异常需要转换掉一些会造成错误的特殊字符
* 选择在java端替换的原因是异常抛出自executeScript方法的参数,现在规范和拼接的json都能通过了
* 但是强烈建议不要使用拼接json
* <p>
* 1.""中的""必须转义
* 2.js字符串中的\n会导致js字符串变成多行,而js字符串不支持多行拼接
* 3.由JSONObject.toString()得到的字符串中html标签的属性会自动加上\造成替换难度加大
* 这边建议去除所有的html标签
*
* @param old 原始字符串
* @return 处理之后的字符串
*/
private String changText(String old) {
private String trimText(String old) {
if (StringUtils.isNotBlank(old)) {
return old.replaceAll("\"", "\\\\\"").replaceAll("\n", "");
String a = old.replaceAll("\n", "").replaceAll("\"", "\\\\\"").replaceAll("\'", "\\\\\'");
System.out.println(a);
return a;
}
return StringUtils.EMPTY;
}

Loading…
Cancel
Save