zoukankan      html  css  js  c++  java
  • JSON数据的处理中的特殊字符

         JSON如今是非经常见的处理数据的方式了。但因为自己使用的是反射获取数据,必须自己处理特殊字符,但总是发现有一些看不见的字符在前台

    var obj = jQuery.parseJSON(msg);会转换失败。

        比如例如以下在Vs中能够看到仅仅有两个字符

      

    可实际上却有三个字符,使用notepad++打开


    一直不明确这些字符是怎样进入数据库的,但进入了,就必须处理,否则在前台就会转换失败。导致数据载入失败。

    非常长时间以为是因为用户复制了一些其它编码的文字,在中文中没有相应的编码。导致的错误。这次又出现了。于是又细致研究了一下。发现原来是ASCⅡ表中的控制字符。!

      明确了这个处理自然就非常easy了。

    后台反射转化为JSON的代码:

    private static string getValue<T>(T t, string pname) where T : class
        {
            Type type = t.GetType();
            PropertyInfo pinfo = type.GetProperty(pname);
            if (pinfo != null)
            {
                object v = pinfo.GetValue(t, null);
                return v != null ?

    v.ToString() : ""; } else { throw new Exception("不存在属性" + pname); } } protected static string ConvertFromModeTojson<T>(T t, string columnInfos) where T : class { string[] cols = columnInfos.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); System.Text.StringBuilder sb = new System.Text.StringBuilder(300); string result = "{"; foreach (string col in cols) { string name = ""{0}":"{1}","; string value = getValue<T>(t, col); value = String2Json(value); sb.Append(string.Format(name, col, value)); } result += sb.ToString().TrimEnd(','); result += "}"; return result; } /// <summary> /// 过滤特殊字符 /// </summary> /// <param name="s"></param> /// <returns></returns> private static string String2Json(String s) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < s.Length; i++) { char c = s.ToCharArray()[i]; switch (c) { case '"': sb.Append("\""); break; case '\': sb.Append("\\"); break; case '/': sb.Append("\/"); break; case '': sb.Append("\b"); break; case 'f': sb.Append("\f"); break; case ' ': sb.Append("\n"); break; case ' ': sb.Append("\r"); break; case ' ': sb.Append("\t"); break; default: if ((c >= 0 && c <= 31)||c ==127)//在ASCⅡ码中。第0~31号及第127号(共33个)是控制字符或通讯专用字符 { } else { sb.Append(c); } break; } } return sb.ToString(); }


    控制字符

  • 相关阅读:
    感想2
    感想1
    记录4
    记录3
    记录2
    记录1
    库存物资管理系统-测试
    开学测试
    大二下开学测试有感
    大二下周总结一
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7017700.html
Copyright © 2011-2022 走看看