• 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}sd{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
  • 相关阅读:
    svn随笔
    关于PHP调用IE的Com组件的一些要求
    Bash总结
    Firefox常用扩展
    proftpd的一些简单配置
    lua积累
    backbone.js源码解析:extend、Backbone.View
    Ubuntu 12.04LTS 安装VMwareWorkstation
    关于安装Ubuntu不将mbr写入grub的经验
    .NET6发布到linux
  • 原文地址:https://www.cnblogs.com/zuiyirenjian/p/3354463.html
Copyright © 2020-2023  润新知