解析JSON问题(一)包含特殊字符

来源:互联网 发布:javascript delay 编辑:程序博客网 时间:2024/05/22 08:55
使用JSON从后台向前台传输数据的时候,当数据本身含有一些特殊字符,会导致JSON数据的解析出错

使用下面的方法对即将向前台输出的json字符串进行处理,可以解决键盘上能输入的所有特殊字符问题。

//当文本中含有如下特殊字符时,此方法可以成功处理,让其在前台被正确解析,注意:此法不能处理单引号

  publicstatic String stringToJson(String s){              StringBuffersb = new StringBuffer();               for(int i=0; i<s.length(); i++){                           charc =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);                  }}          returnsb.toString();            }

//注意,下面的方法是在把你的数据文本接入json数据字符串之前使用,预先对文本做处理后在接入JSON字符串   

//处理文本中的单引号  和  斜杠


publicstatic String StringDanYinToJSON(String ors) {           ors= ors == null ? "" : ors;           StringBufferbuffer = new StringBuffer(ors);           inti = 0;           while(i < buffer.length()) {            if(buffer.charAt(i) == '\'' || buffer.charAt(i) == '\\') {             buffer.insert(i,'\\');             i+= 2;            }else {             i++;            }          }           returnbuffer.toString();     }


0 0