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

摘要:
JSON现在是一种不常见的数据处理方式。但是,因为您使用反射来获取数据,所以必须自己处理特殊字符。然而,在前台varobj=jQuery parseJSON中总会发现一些不可见的字符;转换失败。例如,在Vs中可以看到,只有两个字符,但实际上有三个字符。目前尚不清楚这些字符在使用记事本++打开时如何进入数据库,但它们必须在输入时进行处理,否则在前台转换将失败。数据加载失败。发现它是ASCII表中的一个控制字符。!用于将背景反射转换为JSON的代码:privatestaticstringgetValue<T>,其中T:class{Typetype=T.GetType();PropertyInfopinfo=type.GetProperty;if(pinfo!

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

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

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

  JSON数据的处理中的特殊字符第1张

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

JSON数据的处理中的特殊字符第2张

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

非常长时间以为是因为用户复制了一些其它编码的文字,在中文中没有相应的编码。导致的错误。这次又出现了。于是又细致研究了一下。发现原来是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(); }


控制字符

免责声明:文章转载自《JSON数据的处理中的特殊字符》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python下载安装requests库WPF 数据验证下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

iOS可变字符串的所有操作

可直接把代码复制即可结合输出看结果加深记忆 //创建一个可变字符串 NSMutableString * ms1 = [[NSMutableString alloc]init];     //可以通过类方法来创建 NSMutableString * ms2 = [NSMutableString string];          //用格式化方法创建一个可变...

字符串右移

编写一个函数,要求输入一个字符串和要移动的位数n,使得该字符串能向右移动n位,输出移动后的字符串。例如:tomloveslily移动2位得lytomlovesli。 思路:把字符串变成两部分,交换位置,实际操作先把后n个字符保存起来,将strlen-n个字符往后移动n个位置,最后把n个字符放在前面(C语言) void right_move(char* st...

Kubernetes K8S之通过yaml文件创建Pod与Pod常用字段详解

YAML语法规范;在kubernetes k8s中如何通过yaml文件创建pod,以及pod常用字段详解 YAML 语法规范 K8S 里所有的资源或者配置都可以用 yaml 或 Json 定义。YAML 是一个 JSON 的超集,任何有效的 JSON 文件也都是一个有效的YAML文件。 具体参见:「YAML 语言教程与使用案例」 通过yaml创建nginx...

windows下安装配置phpjavabridge,PHP调用自己的JAVA文件

方法一:(推荐方法 ) 使用php/java桥 JavaBridge.jar  转自:http://zhengdl126.iteye.com/blog/418574http://sourceforge.net/projects/php-java-bridge http://mirror.optus.net/sourceforge/p/ph/php-java...

封装两个简单的Jquery组件

Jquery给我们提供了很大的方便,我们把他看成是一个公共库,以致在这个公共库上延伸出了很多Jquery插件;在项目过程中,有些插件总是不那么令人满意; 主要说两个项目用途: 1、 遮罩层,跟一般的遮罩层不一样,我需要实现的是对某一个元素进行局部遮罩; 2、 冒泡提示,网上有很多,我需要的只是一种在页面指定位置弹出来的一个静止定位的div而已;两个就自己了...

C# 模拟键盘操作SendKey(),SendKeys()

模拟键盘输入就是使用以下2个语法实现的. SendKeys.Send(string keys); //模拟汉字(文本)输入SendKeys.SendWait(string keys);//模拟按键输入先了解一下2个语法的用法吧! 稍后贴出代码看看大家能不能看懂哦/... (1)每个按键由一个或多个字符表示。为了指定单一键盘字符,必须按字符本身的键。例如,为...