C# json工具类
最近学习Extjs4.2.1 因为前台与后台的交互方式基本上是用ajax,数据传输以Json格式为主,所以就自己写下这个工具类来用,但还是不完善的,等学习中发现需要增加的功能时再加进去吧!
注:我写这个工具类的思想是:将对象 或 者多个对象 转换 成一个List<>对象List ,再进行操,这是我的个人习惯 ;
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 5 using System.Web; 6 /*** 7 * JsonHelper Json操作的工具类 8 * 编写环境:vs2012 .net4.5 9 */ 10 11 /*** 12 * 引入 13 * System.Web.Script.Serialization 14 * System.Text.RegularExpressions; 15 */ 16 using System.Web.Script.Serialization; 17 using System.Text.RegularExpressions; 18 19 20 namespace ns.HttpHandler //命名空间,大家根据自己的情况改写 21 { 22 public static class JsonHelper 23 { 24 /*** 25 * 作者:周泽生 26 * 时间:2014-2-13 27 */ 28 #region###一个List<T>转换成json字符串 29 /// <summary> 30 /// 换成格式为{"total:Num,"items":[{obj},{}]"} 31 /// </summary> 32 /// <typeparam name="T"></typeparam> 33 /// <param name="objList"></param> 34 /// <returns></returns> 35 public static string ListTojson<T>(List<T> objList) 36 { 37 int count = objList.Count; 38 // 39 JavaScriptSerializer jss = new JavaScriptSerializer(); 40 string strJss = jss.Serialize(objList); 41 string Json = "{"; 42 Json += 43 String.Format("\"total\":{0},\"items\":{1}", count, strJss); 44 Json += "}"; 45 return JsonDataFormat(Json); 46 } 47 #endregion 48 49 /*** 50 * 作者:周泽生 51 * 时间:2014-2-13 52 */ 53 #region###将时间戳换为DataTime类型 54 public static DateTime ConvertStringTimeToDateTime(long strTime) 55 { 56 long timeTricks = new DateTime(1970, 1, 1).Ticks + strTime * 10000 + TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).Hours * 3600 * (long)10000000; 57 return new DateTime(timeTricks); 58 } 59 #endregion 60 61 /*** 62 * 作者:周泽生 63 * 时间:2014-2-13 64 */ 65 #region###将DataTime类型换为时间戳 66 public static long ConvertDateTimeToStringTime(DateTime theTime) 67 { 68 DateTime d1 = new DateTime(1970, 1, 1); 69 DateTime d2 = theTime.ToUniversalTime(); 70 TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks); 71 return (long)ts.TotalMilliseconds; 72 } 73 #endregion 74 75 76 /*** 77 * 作者:周泽生 78 * 时间:2014-2-13 79 */ 80 #region###将Json中的DataTime类型转换为正常yyy-MM-dd形式(学习用的,无实际应用) 81 public static string JsonDataToStringData(string strJson) 82 { 83 //测试正则1,找到\/Date(725817600000)\/ 84 string strPattan = @"\\/Date\([0-9]*\)\\/"; 85 Regex regex = new Regex(strPattan); 86 Match resMatch = regex.Match(strJson); 87 88 if (resMatch.Length != 0) 89 { 90 //从\/Date(725817600000)\/ 中 找到时间戳 91 Regex timeRegex = new Regex(@"[0-9]+"); 92 Match timeMatch = timeRegex.Match(resMatch.ToString()); 93 94 if (timeMatch.Length != 0) 95 { 96 //将时间戳换为正常时间字符串 97 DateTime dt = ConvertStringTimeToDateTime(long.Parse(timeMatch.ToString())); 98 string strTime = dt.ToString("yyyy-MM-dd"); 99 100 return strTime; 101 } 102 else 103 { 104 return string.Empty; 105 } 106 } 107 else 108 { 109 return string.Empty; 110 } 111 } 112 113 #endregion 114 115 116 /*** 117 * 作者:周泽生 118 * 时间:2014-2-13 119 */ 120 #region###将Json中所有DataTime类型进行替换 121 public static string JsonDataFormat(string strJson) 122 { 123 //从strJson字符中匹配 124 string strPattan = @"\\/Date\([0-9]*\)\\/"; 125 Regex regex = new Regex(strPattan); 126 string strResult = regex.Replace(strJson, new MatchEvaluator(OutPutMatch)); 127 return strResult; 128 } 129 130 //在上面的个MatchEvaluator 委托中调 用的方法 , 可以对匹配结果进行处理 131 private static string OutPutMatch(Match match) 132 { 133 Regex timeRegex = new Regex(@"[0-9]+"); 134 Match timeMatch = timeRegex.Match(match.ToString()); 135 136 if (timeMatch.Length != 0) 137 { 138 //将时间戳换为正常时间字符串 139 DateTime dt = ConvertStringTimeToDateTime(long.Parse(timeMatch.ToString())); 140 string strTime = dt.ToString("yyyy-MM-dd"); 141 return strTime; 142 } 143 else 144 { 145 return null; 146 } 147 } 148 #endregion 149 150 } 151 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。