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 }

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。