如何用jackson解析含有转义字符的字符串,为标准格式的json字符串

大哥大姐,请教下,如何用jackson解析含有转义字符的字符串,为标准格式的json字符串
最新回答
怕黑

2024-10-30 13:28:08

使用JSON从后台向前台传输数据的时候,当数据本身含有一些特殊字符,会导致JSON数据的解析出错。
  使用下面的方法对即将向前台输出的json字符串进行处理,可以解决键盘上能输入的所有特殊字符问题。  
  //当文本中含有如下特殊字符时,此方法可以成功处理,让其在前台被正确解析,注意:此法不能处理单引号
  public static String stringToJson(String s) {
  StringBuffer sb = new StringBuffer ();
  for (int i=0; i<s.length(); i++) {
  
  char c = s.charAt(i);
  switch (c) {
  case '\"':
  sb.append("\\\"");
  break;
  // case '\\': //如果不处理单引号,可以释放此段代码,若结合下面的方法处理单引号就必须注释掉该段代码
  // sb.append("\\\\");
  // break;
  case '/':
  sb.append("\\/");
  break;
  case '\b': //退格
  sb.append("\\b");
  break;
  case '\f': //走纸换页
  sb.append("\\f");
  break;
  case '\n':
  sb.append("\\n"); //换行
  break;
  case '\r': //回车
  sb.append("\\r");
  break;
  case '\t': //横向跳格
  sb.append("\\t");
  break;
  default:
  sb.append(c);
  }}
  return sb.toString();
  }
  
  //注意,下面的方法是在把你的数据文本接入json数据字符串之前使用,预先对文本做处理后在接入JSON字符串
  //处理文本中的单引号 和 斜杠
  public static String StringDanYinToJSON(String ors) {
  ors = ors == null ? "" : ors;
  StringBuffer buffer = new StringBuffer(ors);
  int i = 0;
  while (i < buffer.length()) {
  if (buffer.charAt(i) == '\'' || buffer.charAt(i) == '\\') {
  buffer.insert(i, '\\');
  i += 2;
  } else {
  i++;
  }
  }
  return buffer.toString();
  }