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

使用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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值