C# 反序列化datetime的处理

Newtonsoft.Json.dll(获取最新版,我使用的是8.0)提供了非常好的Json序列化和反序列化方式,但是对日期的处理却让我纠结了很久。首先定义类如下:

public class Student{
    public int Id{get;set;}
    public string Name{get;set;}
    public DateTime BirthDay{get;set;}
}

序列化代码如下:

Student stu = new Student()
{
    Id = 1,
    Name = "zhangsan",
    BirthDay = DateTime.Now
};
String result = Newtonsoft.Json.JsonConvert.SerializeObject(stu);
Console.WriteLine(result);
Console.ReadLine();

结果是:{"Id":1,"Name":"zhangsan","BirthDay":"2016-08-03T17:23:54.2480422+08:00"}

修改代码如下:

Student stu = new Student()
{
    Id = 1,
    Name = "zhangsan",
    BirthDay = DateTime.Now
};
Newtonsoft.Json.Converters.IsoDateTimeConverter timeConverter = new Newtonsoft.Json.Converters.IsoDateTimeConverter();
//这里使用自定义日期格式,如果不使用的话,默认是ISO8601格式
timeConverter.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
String result = Newtonsoft.Json.JsonConvert.SerializeObject(stu, Newtonsoft.Json.Formatting.None, timeConverter);
Console.WriteLine(result);
Console.ReadLine();

结果是:{"Id":1,"Name":"zhangsan","BirthDay":"2016-08-03 17:32:03"}

另,延伸方法:

public static DataTable ConvertToDataTable(string json)
{
Newtonsoft.Json.Converters.IsoDateTimeConverter timeConverter = new Newtonsoft.Json.Converters.IsoDateTimeConverter();
//这里使用自定义日期格式,如果不使用的话,默认是ISO8601格式
timeConverter.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
DataTable dt = Newtonsoft.Json.JsonConvert.SerializeObject<DataTable>(json, timeConverter);
return dt;
}

感谢好友:http://www.cnblogs.com/duanjt/p/5733791.html

时间: 2024-12-28 20:59:18

C# 反序列化datetime的处理的相关文章

Serializer序列化/反序列化DateTime少了8小时问题解决

1.举例子 JavascriptSerializer serializer = new JavascriptSerializer(); DateTime now = DateTime.Parse("2016-07-21 00:00:00"); Console.WriteLine(serializer.Deserialize<DateTime>(serializer.Serialize(now))); //结果是:2015-07-20 16:00:00 2.为什么? Java

C#学习日志 day8 -------------- async await 异步方法入门(引用博客)以及序列化和反序列化的XML及json实现

首先是异步方法的介绍,这里引用自http://www.cnblogs.com/LoveJenny/archive/2011/11/01/2230933.html async and await 简单的入门 如果有几个Uri,需要获取这些Uri的所有内容的长度之和,你会如何做? 很简单,使用WebClient一个一个的获取uri的内容长度,进行累加. 也就是说如果有5个Uri,请求的时间分别是:1s 2s 3s 4s 5s. 那么需要的时间是:1+2+3+4+5=(6*5)/2=15. 如果采用并

ASP.NET 中JSON 的序列化和反序列化

JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍,ASP.NET如何序列化和反序列化的处理,在序列化和反序列化对日期时间.集合.字典的处理. 一.JSON简介: JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大括号''{}'

利用&lt;JavascriptSerializer类&gt; 进行Json对象的序列化和反序列化

1. 首先, JavascriptSerializer类所在名空间: using System.Web.Script.Serialization; 2. 相关的3篇文章, 标记下: 使用JavaScriptSerializer进行JSON序列化 注意:    是复杂对象. JSON是Javascript中常用的数据格式,然而,在.NET 2.0中没有内置序列化JSON的类,原因估计是当时Ajax尚未兴起.后来就有人写了一个Json.NET类库..NET 3.5新增了一个把对象序列化为JSON字符

JSON序列化和反序列化的实例

之前有项目中使用到了Json的序列化和反序列化,现在将使用的实例记录下来以备查阅.如有不妥,请指教. 代码的最终目的是得到一个符合 resultClass<List<rtnGetFindMyCar>> 要求的JSON字符串 JsonHelper.cs public class JsonHelper { /// <summary> /// JSON序列化 /// </summary> public static string JsonSerializer<

Json的序列化与反序列化

想想某一天,你在看LOL攻略的时候,系统突然崩溃了,接着浏览器出现了密密麻麻的LOL帐号和密码,你一定在想:"天啊,这次要发财了,说不定里面有超凡号或者王者号,我得赶紧全部记下来."然而说完你就惊呆了,那么多的帐号密码,而且全部写在了Json里面,一个一个复制粘贴要记到什么时候啊...如果这时候我在你身边,我一定会帮助你的,前提是,要分几个王者号给我噢...  言归正传. 上面举的例子虽然有点不太现实,但其实是想和大家说明一个问题,如果要解析Json或XML,请不要使用检索字符串的方式

无法反序列化作为参数传递的消息。无法识别序列化格式。

解决方法: MessageQueue.Formatter 设置Formatter 属性和Message.Formatter 设置属性,一个是在队列中设置,一个是在消息中设置 MessageQueue.Formatter和Message.Formatter 都要设置还要设置的一模一样 否则就会报异常,无法反序列化作为参数传递的消息.无法识别序列化格式. [Serializable] public class MsmqLog { public string GUID { get; set; } pu

ASP.NET中JSON的序列化和反序列化

ASP.NET中JSON的序列化和反序列化 JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍,ASP.NET如何序列化和反序列化的处理,在序列化和反序列化对日期时间.集合.字典的处理.     一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是

asp.net mvc中如何处理字符串与对象之间的序列化与反序列化(一)

前台我们一般用ajax来发送数据到后端进行处理,如果json数据结构和后台的实体类结构一致,就直接可以反序列化为指定的对象进行操作,非常方便. 前端发送的json数据结构: 后端实体结构: [csharp] view plain copy public partial class Cures { public string CureID { get; set; } public string MainCureSubjectID { get; set; } public string MainCu