大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C#技巧 > C# json工具类

C# json工具类

关键词:工具json  阅读(793) 赞(14)

[摘要]最近学习Extjs4.2.1 因为前台与后台的交互方式基本上是用ajax,数据传输以Json格式为主,所以就自己写下这个工具类来用,但还是不完善的,等学习中发现需要增加的功能时再加进去吧!

最近学习Extjs4.2.1 因为前台与后台的交互方式基本上是用ajax,数据传输以Json格式为主,所以就自己写下这个工具类来用,但还是不完善的,等学习中发现需要增加的功能时再加进去吧!

注:我写这个工具类的思想是:将对象 或 者多个对象 转换 成一个List<>对象List ,再进行操,这是我的个人习惯 ;

 using System;
 using System.Collections.Generic;
 using System.Linq;
 
 using System.Web;
 /***
  * JsonHelper Json操作的工具类
  * 编写环境:vs2012 .net4.5
  */
 
 /***
  * 引入
  * System.Web.Script.Serialization
  * System.Text.RegularExpressions;
  */
 using System.Web.Script.Serialization;
 using System.Text.RegularExpressions;
 
 
 namespace ns.HttpHandler //命名空间,大家根据自己的情况改写
 {
     public static class JsonHelper
     {    
         /***
          * 作者:周泽生 
          * 时间:2014-2-13
          */
         #region###一个List<T>转换成json字符串
         /// <summary>
         /// 换成格式为{"total:Num,"items":[{obj},{}]"}
         /// </summary>
         /// <typeparam name="T"></typeparam>
         /// <param name="objList"></param>
         /// <returns></returns>
         public static string ListTojson<T>(List<T> objList)
         {
             int count = objList.Count;
             //
             JavaScriptSerializer jss = new JavaScriptSerializer();
             string strJss = jss.Serialize(objList);
             string Json = "{";
             Json +=
                String.Format("\"total\":{0},\"items\":{1}", count, strJss);
             Json += "}";
             return JsonDataFormat(Json);
         }
         #endregion
 
         /***
          * 作者:周泽生
          * 时间:2014-2-13
          */
         #region###将时间戳换为DataTime类型
         public static DateTime ConvertStringTimeToDateTime(long strTime)
         {
             long timeTricks = new DateTime(1970, 1, 1).Ticks + strTime * 10000 + TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).Hours * 3600 * (long)10000000;
             return new DateTime(timeTricks);
         }
         #endregion
 
         /***
          * 作者:周泽生
          * 时间:2014-2-13
          */
         #region###将DataTime类型换为时间戳
         public static long ConvertDateTimeToStringTime(DateTime theTime)
         {
             DateTime d1 = new DateTime(1970, 1, 1);
             DateTime d2 = theTime.ToUniversalTime();
             TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);
             return (long)ts.TotalMilliseconds;
         }
         #endregion
 
 
         /***
          * 作者:周泽生
          * 时间:2014-2-13
          */
         #region###将Json中的DataTime类型转换为正常yyy-MM-dd形式(学习用的,无实际应用)
         public static string JsonDataToStringData(string strJson)
         {
             //测试正则1,找到\/Date(725817600000)\/
             string strPattan = @"\\/Date\([0-9]*\)\\/";
             Regex regex = new Regex(strPattan);
             Match resMatch = regex.Match(strJson);
 
             if (resMatch.Length != 0)
             {
                 //从\/Date(725817600000)\/ 中 找到时间戳
                 Regex timeRegex = new Regex(@"[0-9]+");
                 Match timeMatch = timeRegex.Match(resMatch.ToString());
 
                 if (timeMatch.Length != 0)
                 {
                     //将时间戳换为正常时间字符串
                     DateTime dt = ConvertStringTimeToDateTime(long.Parse(timeMatch.ToString()));
                     string strTime = dt.ToString("yyyy-MM-dd");
 
                     return strTime;
                 }
                 else
                 {
                     return string.Empty;
                 }
             }
             else
             {
                 return string.Empty;
             }
         }
 
         #endregion
 
 
         /***
          * 作者:周泽生
          * 时间:2014-2-13
          */
         #region###将Json中所有DataTime类型进行替换
         public static string JsonDataFormat(string strJson)
         {    
             //从strJson字符中匹配
             string strPattan = @"\\/Date\([0-9]*\)\\/";
             Regex regex = new Regex(strPattan);
             string strResult = regex.Replace(strJson, new MatchEvaluator(OutPutMatch));
             return strResult;
         }
 
         //在上面的个MatchEvaluator 委托中调 用的方法 , 可以对匹配结果进行处理
         private static string OutPutMatch(Match match)
         {
             Regex timeRegex = new Regex(@"[0-9]+");
             Match timeMatch = timeRegex.Match(match.ToString());
 
             if (timeMatch.Length != 0)
             {
                 //将时间戳换为正常时间字符串
                 DateTime dt = ConvertStringTimeToDateTime(long.Parse(timeMatch.ToString()));
                 string strTime = dt.ToString("yyyy-MM-dd");
                 return strTime;
             }
             else
             {
                 return null;
             }
         }
         #endregion
 
     }
 }


相关评论