C# Json处理日期和Table

简介: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.
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

 

相关文章
|
6月前
|
JSON 数据格式
SpringMVC-接收请求中的json数据及日期类型参数传递
SpringMVC-接收请求中的json数据及日期类型参数传递
140 0
|
2月前
|
XML JSON 数据处理
C# 中的 XML 与 JSON 数据处理
在现代软件开发中,数据交换和存储需求日益增长,XML 和 JSON 成为最常用的数据格式。本文从 C# 角度出发,详细介绍如何处理这两种格式,并提供示例代码。对于 XML,我们介绍了读取、创建和写入 XML 文件的方法;对于 JSON,则展示了如何使用 Newtonsoft.Json 库进行数据解析和序列化。此外,文章还总结了常见问题及其解决方案,帮助开发者更好地应对实际项目中的挑战。
175 61
C# 中的 XML 与 JSON 数据处理
|
1月前
|
C#
C# 技巧:如何确定日期时间范围的日周月季度半年
C# 技巧:如何确定日期时间范围的日周月季度半年
28 1
|
1月前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
328 0
|
3月前
|
开发框架 前端开发 .NET
C# Newtonsoft.Json.Formatting DateTime 日期格式化
C# Newtonsoft.Json.Formatting DateTime 日期格式化
48 0
|
6月前
|
存储 安全 Unix
C#.Net筑基-类型系统②常见类型--日期和时间的故事
在System命名空间中,有几种表示日期时间的不可变结构体(Struct):DateTime、DateTimeOffset、TimeSpan、DateOnly和TimeOnly。DateTime包含当前本地或UTC时间,以及最小和最大值;DateTimeOffset增加了时区偏移信息,适合跨时区操作。UTC是世界标准时间,而格林尼治标准时间(GMT)不稳定,已被更精确的UTC取代。DateTimeOffset和DateTime提供了转换为UTC和本地时间的方法,以及各种解析和格式化函数。
|
6月前
|
JSON Java 数据格式
nbcio-boot升级springboot、mybatis-plus和JSQLParser后的LocalDateTime日期json问题
nbcio-boot升级springboot、mybatis-plus和JSQLParser后的LocalDateTime日期json问题
71 0
|
6月前
|
XML 存储 JSON
c#XML、JSON的序列化和反序列化,看完你就懂了
c#XML、JSON的序列化和反序列化,看完你就懂了
103 0
|
6月前
|
JSON C语言 数据格式
C语言与lua通过json对象交互
C语言与lua通过json对象交互
124 1
|
6月前
|
JSON 关系型数据库 MySQL
这个问题是由于Flink的Table API在处理MySQL数据时,将MULTISET类型的字段转换为了JSON格式
【1月更文挑战第17天】【1月更文挑战第84篇】这个问题是由于Flink的Table API在处理MySQL数据时,将MULTISET类型的字段转换为了JSON格式
98 1