Json.Net 使用属性定义日期的序列化格式

如果一个实体类里所有的时间即DateTime类型的字段,都处理成统一格式的话,可以使用如下方式:

IsoDateTimeConverter timeFormat = new IsoDateTimeConverter();
            timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
            JsonConvert.SerializeObject(stu, Newtonsoft.Json.Formatting.Indented, timeFormat);

如果需要返回的格式不一致,比如有的需要年月日,有的是年月日时分秒,则这样控制不了。可以通过定义属性来解决

 1  public class student
 2     {
 3         public string Name { get; set; }
 4         public int Age { get; set; }
 5         [JsonConverter(typeof(DateFormat))]
 6         public DateTime BirthDay { get; set; }
 7         [JsonConverter(typeof(DateTimeFormat))]
 8         public DateTime CreateTime { get; set; }
 9     }
10     public class DateFormat:IsoDateTimeConverter
11     {
12         public DateFormat()
13         {
14             base.DateTimeFormat = "yyyy-MM-dd";
15         }
16     }
17     public class DateTimeFormat:IsoDateTimeConverter
18     {
19         public DateTimeFormat()
20         {
21             base.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
22         }
23
24     }

实例演示:

1 student stu = new student()
2             {
3                 Name = "张三",
4                 Age = 30,
5                 BirthDay = new DateTime(1986, 7, 16),
6                 CreateTime = DateTime.Now
7             };
8             string result = JsonConvert.SerializeObject(stu);

result = {"Name":"张三","Age":30,"BirthDay":"1986-07-16","CreateTime":"2016-01-16 23:13:34"}

这样控制的粒度更细了

时间: 2024-08-05 11:11:03

Json.Net 使用属性定义日期的序列化格式的相关文章

通过自己定义MVC的Controller的Json转换器解决日期序列化格式问题

今日,在MVC框架下使用EasyUI的datagrid载入数据时,服务端返回的Json日期格式为 /Date(1433088000000+0800)/ .须要client进一步转换.并且也不符合EasyUI经常使用的日期格式要求,为此,对MVC框架下的Controller做了一些研究.发现通过对Controller的Json方法进行扩展就能够解决该问题.并且能够通过进一步自己定义序列化类,满足不论什么类型的数据的序列化格式要求. 要实现该目标,须要完毕三个步骤的工作: 1.创建Controlle

通过自定义MVC的Controller的Json转换器解决日期序列化格式问题

今日,在MVC框架下使用EasyUI的datagrid加载数据时,服务端返回的Json日期格式为 /Date(1433088000000+0800)/ ,需要客户端进一步转换,而且也不符合EasyUI常用的日期格式要求,为此,对MVC框架下的Controller做了一些研究,发现通过对Controller的Json方法进行扩展就可以解决该问题,而且可以通过进一步自定义序列化类,满足任何类型的数据的序列化格式要求. 要实现该目标,需要完成三个步骤的工作: 1.创建Controller的派生类,引入

json过滤某些属性 之@jsonignore

Jackson相关: 使用Jackson相关的注解时一定要注意自己定义的属性命名是否规范. 命名不规范时会失去效果.(例如Ename ,Eage 为不规范命名."nameE","ageE"为规范命名)我在此处掉坑半个小时.至于命名规范,大家自己搜索.其实不要太奇葩的命名都是可以得. 如果使用@JsonIgnore注解不起效时请注意一下你的属性名字是否规范 1.@JsonIgnoreProperties 此注解是类注解,作用是json序列化时将java bean中的一

c# 通过json.net中的JsonConverter进行自定义序列化与反序列化

相信大家在工作中会经常遇见对json进行序列化与反序列化吧,但通常的序列化与反序列化中的json结构与c#中的类模型结构是相对应的,我们是否可以在序列化一个对象时候,让我们json的数据结构能按照自己的意愿,而不必与该对象的数据结构一样呢?,比如说,一个对象,只有一个名为"ID"的int类型的属性,值为1,如果序列化该对象,则能得到json:{"ID":1},但我现在希望得到的json的"ID"值是bool类型:{"ID":t

Json.Net学习(1) 实现简单的序列化和反序列化

Attributes 可以用来控制Json.Net如何序列化和反序列化.Net对象. >JsonObjectAttribute--标记在类上,用于控制该类如何被序列化为一个Json对象(JSON Object) >JsonArrayAttribute--标记在集合上,用于控制该集合如何被序列化为一个Json集合(JSON Array) >JsonPropertyAttribute--标记在字段和属性上,用于控制它如何被序列化为一个Json对象中的属性 >JsonConverterA

project.json 和 csproj 属性之间的映射

作者 Nate McMaster .NET Core 工具的开发过程中实施了一项重要的设计更改,即不再支持 project.json 文件,而是将 .NET Core 项目转移到 MSBuild/csproj 格式. 本文介绍 project.json 中的设置如何以 MSBuild/csproj 格式表示,以便用户可学习如何使用新格式,并了解将项目升级到最新版本的工具时由迁移工具做出的更改. csproj 格式 新格式 *.csproj 是一种基于 XML 的格式. 以下示例演示使用 Micr

Json动态添加属性

一维Json: var Json={}: Json.name="小明"; Json.age="12": Json.sex="男": 输出效果: 例如获取name:Json.name 二维Json: var feed=[];//添加属性feed feed[0]={}; feed[0].sex="男"; feed[0].name="小明"; feed[1]={}; feed[1].sex="女&quo

HTML5中新加的标签和属性定义

HTML5 <!DOCTYPE> 标签所有主流浏览器都支持 <!DOCTYPE> 声明.<!DOCTYPE> 声明非常重要,它是一种标准通用标记语言的文档类型声明,通过该标签,浏览器能够了解HTML5文档正在使用的HTML规范,<!DOCTYPE> 声明是HTML5文档的起始点,也就是说它必须位于HTML5文档的第一行!标签定义及使用说明:<!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签之前.<!DO

【转】Fastjson生成json时Null属性不显示

Fastjson生成json时Null属性不显示 举个例子 Map < String , Object > jsonMap = new HashMap< String , Object>(); jsonMap.put("a",1); jsonMap.put("b",""); jsonMap.put("c",null); jsonMap.put("d","wuzhuti.cn