C# Json处理日期和Table

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;   

using System.Runtime.Serialization.Json;   

using System.IO;   

using System.Text;   

using System.Text.RegularExpressions;   

/// <summary>  

/// JSON序列化和反序列化辅助类  

/// </summary>  

public class JsonHelper  

{  

     /// <summary>  

    /// JSON序列化  

    /// </summary>  

     public static string JsonSerializer<T>(T t)  

     {  

         DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));  

         MemoryStream ms = new MemoryStream();  

        ser.WriteObject(ms, t);  

         string jsonString = Encoding.UTF8.GetString(ms.ToArray());  

         ms.Close();  

         //替换Json的Date字符串  

         string p = @"///Date/((/d+)/+/d+/)///"; /*////Date/((([/+/-]/d+)|(/d+))[/+/-]/d+/)////*/

         MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertJsonDateToDateString);  

          Regex reg = new Regex(p);  

         jsonString = reg.Replace(jsonString, matchEvaluator);  

         return jsonString;  

     }  

     /// <summary>  

     /// JSON反序列化  

     /// </summary>  

     public static T JsonDeserialize<T>(string jsonString)  

     {  

         //将"yyyy-MM-dd HH:mm:ss"格式的字符串转为"//Date(1294499956278+0800)//"格式  

         string p = @"/d{4}-/d{2}-/d{2}/s/d{2}:/d{2}:/d{2}";  

        MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertDateStringToJsonDate);  

        Regex reg = new Regex(p);  

         jsonString = reg.Replace(jsonString, matchEvaluator);  

         DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));  

        MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));  

         T obj = (T)ser.ReadObject(ms);  

         return obj;  

     }  

    

     /// <summary>  

     /// 将Json序列化的时间由/Date(1294499956278+0800)转为字符串  

     /// </summary>  

     private static string ConvertJsonDateToDateString(Match m)  

     {  

         string result = string.Empty;  

         DateTime dt = new DateTime(1970,1,1);  

         dt = dt.AddMilliseconds(long.Parse(m.Groups[1].Value));  

         dt = dt.ToLocalTime();  

         result = dt.ToString("yyyy-MM-dd HH:mm:ss");  

        return result;  

     }  

     /// <summary>  

     /// 将时间字符串转为Json时间  

     /// </summary>  

     private static string ConvertDateStringToJsonDate(Match m)  

     {  

         string result = string.Empty;  

         DateTime dt = DateTime.Parse(m.Groups[0].Value);  

         dt = dt.ToUniversalTime();  

         TimeSpan ts = dt - DateTime.Parse("1970-01-01");  

         result = string.Format("///Date({0}+0800)///",ts.TotalMilliseconds);  

        return result;  

    }  

 }



 



create table Users

(

 UserId int identity(1,1) primary key,

 UserName varchar(20)

)



insert into Users values('Bradley')

insert into Users values('Dan')















 public class JsonHelper

    {

        #region  序列化和反序列化

        // 序列化

        public static  string JsonSerializer<T>(T t)

        {

            // 使用 DataContractJsonSerializer 将 T 对象序列化为内存流。 

            DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof (T));

            MemoryStream ms = new MemoryStream();

            // 使用 WriteObject 方法将 JSON 数据写入到流中。 

            jsonSerializer.WriteObject(ms, t);

            // 流转字符串

            string jsonString = Encoding.UTF8.GetString(ms.ToArray());

            ms.Close();

            //替换Json的Date字符串  

            string p = @"\\/Date\((\d+)\+\d+\)\\/";   

            MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertJsonDateToDateString);  

            Regex reg = new Regex(p);   

            jsonString = reg.Replace(jsonString, matchEvaluator);

            return jsonString;

        }

        public static T JsonDeserialize<T>(string  jsonString)

        {

            //将"yyyy-MM-dd HH:mm:ss"格式的字符串转为"\/Date(1294499956278+0800)\/"格式  

            string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";   

            MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertDateStringToJsonDate);   

            Regex reg = new Regex(p);  

            jsonString = reg.Replace(jsonString, matchEvaluator);

            DataContractJsonSerializer jsonSerializer=new DataContractJsonSerializer(typeof(T));

            // 字符串转流

            MemoryStream ms=new MemoryStream(Encoding.UTF8.GetBytes(jsonString));

            // 通过使用 DataContractJsonSerializer 的 ReadObject 方法,将 JSON 编码数据反序列化为T 

            T obj = (T) jsonSerializer.ReadObject(ms);

            return obj;

        }

        public static string ConvertJsonDateToDateString(Match match)

        {

            string result = string.Empty;

            DateTime dateTime=new DateTime(1970,1,1);

            dateTime = dateTime.AddMilliseconds(long.Parse(match.Groups[1].Value));

            dateTime = dateTime.ToLocalTime();

            result = dateTime.ToString("yyyy-MM-dd HH:mm:ss");

            return result;

        }

        private static string ConvertDateStringToJsonDate(Match m)

        {

            string result = string.Empty;   

            DateTime dt = DateTime.Parse(m.Groups[0].Value); 

            dt = dt.ToUniversalTime();   

            TimeSpan ts = dt - DateTime.Parse("1970-01-01");  

            result = string.Format("\\/Date({0}+0800)\\/",ts.TotalMilliseconds);   

            return result;

        }

        #endregion



        // 对象转换为Json

        public static  string  ObjectToJson(object obj)

        {

            JavaScriptSerializer js=new JavaScriptSerializer();

            try

            {

                return js.Serialize(obj);

            }

            catch (Exception exception)

            {

                

                throw new Exception(exception.Message);

            }

        }

        // 数据表转化为集合

        public static List<Dictionary<string,object>> DataTableToList(DataTable dt)

        {

            List<Dictionary<string ,object>> list=new List<Dictionary<string, object>>();

            foreach (DataRow dataRow in dt.Rows)

            {

                Dictionary<string,object> dic=new Dictionary<string, object>();

                foreach (DataColumn dc in dt.Columns)

                {

                    dic.Add(dc.ColumnName,dataRow[dc.ColumnName]);

                }

                list.Add(dic);

            }

            return list;

        }

        // 表转换为Json

        public static string DataTableToJson(DataTable dt)

        {

            return ObjectToJson(DataTableToList(dt));

        }

    }

 来自:http://blog.csdn.net/cncdns/article/details/6164389



 



http://blog.csdn.net/bradleydan/article/details/7927862

 

你可能感兴趣的:(table)