Json 知识点总结

这两天被json里的特殊字符搞惨了,但总算弄出来了!还是总结些知识点吧!

 

在对数据库取出来的数据(特别是描述信息)里面含有特殊字符的话,使用JSON.parse将json字符串转换成json对象的时候会出错,主要 是双引号,回车换行等影响明显,左尖括号和右尖括号也会导致显示问题,所以要在输出到页面进行json对象转换之前将一些特殊符合进行编码或转义,下面展 示的是C#代码编码和转义几个常用特殊字符。经过笔者测试,将这些符号编码和转义之后,大部分json字符串都可以转换成json对象了。如果遇到个别问 题,应朝着这个方向去查找问题。

  1.             theString = theString.Replace(">", ">");  
  2.             theString = theString.Replace("<", "&lt;");  
  3.             theString = theString.Replace(" ", "&nbsp;");  
  4.             theString = theString.Replace("\"", "&quot;");  
  5.             theString = theString.Replace("\'", "&#39;");  
  6.             theString = theString.Replace("\\", "\\\\");//对斜线的转义  
  7.             theString = theString.Replace("\n", "\\n");  
  8.             theString = theString.Replace("\r", "\\r");  


注意:\r是回到行首,\n是新启一行,这两个一般同时出现,应该同时处理。

补充:文字中间的换行,空格在数据库里面不以\r\n,&nbsp;;等形式显示出来

以上转自:http://blog.csdn.net/dotNET25/article/details/24475437

----------------------------------------------------------------------------------------

转自:http://blog.csdn.net/icewizardry/article/details/17265267

json - 内容中需处理的特殊字符

protected string RemoveIllegalCharacterForJson(string json)
{
StringBuilder stb = new StringBuilder(json);
return stb.Replace("\r", "\\r").Replace("\n", "\\n").Replace("'", "\"").ToString();
}

 

使用下面的方法对即将向前台输出的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();
     }

posted @ 2015-10-22 18:20  江湖丶丿新进程  阅读(219)  评论(0)    收藏  举报