Json.net日期格式化设置方式
Json.net默认的时间格式化后带T,不符合一般的业务要求,重新设置JSON.NET的默认日期格式化方式,代码如下:
//////Json.net默认转换设置 /// privatestaticvoidDefaultJsonConvertSetting() { JsonSerializerSettingssetting=newJsonSerializerSettings(); JsonConvert.DefaultSettings=newFunc(()=> { //日期类型默认格式化处理 setting.DateFormatHandling=DateFormatHandling.MicrosoftDateFormat; setting.DateFormatString="yyyy-MM-ddHH:mm:ss"; //空值处理 //setting.NullValueHandling=NullValueHandling.Ignore; returnsetting; }); }
下面看下Json.Net使用属性定义日期的序列化格式
如果一个实体类里所有的时间即DateTime类型的字段,都处理成统一格式的话,可以使用如下方式:
IsoDateTimeConvertertimeFormat=newIsoDateTimeConverter(); timeFormat.DateTimeFormat="yyyy-MM-ddHH:mm:ss"; JsonConvert.SerializeObject(stu,Newtonsoft.Json.Formatting.Indented,timeFormat);
如果需要返回的格式不一致,比如有的需要年月日,有的是年月日时分秒,则这样控制不了。可以通过定义属性来解决
publicclassstudent { publicstringName{get;set;} publicintAge{get;set;} [JsonConverter(typeof(DateFormat))] publicDateTimeBirthDay{get;set;} [JsonConverter(typeof(DateTimeFormat))] publicDateTimeCreateTime{get;set;} } publicclassDateFormat:IsoDateTimeConverter { publicDateFormat() { base.DateTimeFormat="yyyy-MM-dd"; } } publicclassDateTimeFormat:IsoDateTimeConverter { publicDateTimeFormat() { base.DateTimeFormat="yyyy-MM-ddHH:mm:ss"; } }
实例演示:
studentstu=newstudent() { Name="张三", Age=, BirthDay=newDateTime(,,), CreateTime=DateTime.Now }; stringresult=JsonConvert.SerializeObject(stu); result={"Name":"张三","Age":30,"BirthDay":"1986-07-16","CreateTime":"2016-01-1623:13:34"}
这样控制的粒度更细了
总结
以上所述是小编给大家介绍的Json.net日期格式化设置方式,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。