首页 > 代码库 > JSON数据的处理中的特殊字符

JSON数据的处理中的特殊字符

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

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

    例如如下在Vs中可以看到只有两个字符

  

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


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

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

  明白了这个处理自然就很简单了。

后台反射转化为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 = http://www.mamicode.com/getValue(t, col);         >
控制字符