通过自己定义MVC的Controller的Json转换器解决日期序列化格式问题
今日,在MVC框架下使用EasyUI的datagrid载入数据时,服务端返回的Json日期格式为 /Date(1433088000000+0800)/ 。须要client进一步转换。并且也不符合EasyUI经常使用的日期格式要求,为此,对MVC框架下的Controller做了一些研究。发现通过对Controller的Json方法进行扩展就能够解决该问题。并且能够通过进一步自己定义序列化类,满足不论什么类型的数据的序列化格式要求。
要实现该目标,须要完毕三个步骤的工作:
1、创建Controller的派生类。引入自己定义JsonResult
2、创建JsonResult的派生类。实现Json日期格式的自己定义实现
3、全部须要实现自己定义日期序列化格式的控制器,需继承于上述Controller的派生类
详细代码实现示比例如以下:
/// <summary> /// 通过重载ExecuteResult方法,实现自己定义序列化日期的实现 /// </summary> public class VMEJsonResult : JsonResult { public override void ExecuteResult(ControllerContext context) { if (context == null) { throw new ArgumentNullException("context"); } HttpResponseBase response = context.HttpContext.Response; if (this.Data != null) { JsonSerializerSettings setting = new JsonSerializerSettings(); // 设置日期序列化的格式 setting.DateFormatString = "yyyy-MM-dd HH:mm:ss"; response.Write(JsonConvert.SerializeObject(Data, setting)); } } } /// <summary> /// 通过创建Controller的派生类来引入自己定义的Json实现 /// </summary> public class VMEController : Controller { protected override JsonResult Json(object data, string contentType, Encoding contentEncoding) { return new VMEJsonResult { Data = data, ContentType = contentType, ContentEncoding = contentEncoding }; } public new JsonResult Json(object data, JsonRequestBehavior jsonRequest) { return new VMEJsonResult { Data = data, JsonRequestBehavior = jsonRequest }; } public new JsonResult Json(object data) { return new VMEJsonResult { Data = data, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } } /// <summary> /// 全部须要实现自己定义日期序列化效果的控制器。必须继承于VMEController /// </summary> public class CouponController : VMEController { public ActionResult Index() { return View(); } public ActionResult GetAllCouponTypes() { Hashtable hashtable = new Hashtable(); hashtable["sessionId"] = ""; string json = JsonHelper.Serialize(hashtable); string retJson = HttpHelper.PostForJson("http://localhost/vme", "CouponService.svc", "GetAllCouponTypes", json); string jsonResult = JsonHelper.GetString(retJson); List<CouponType> results = JsonHelper.DeserializeObject<List<CouponType>>(jsonResult); return Json(results, JsonRequestBehavior.AllowGet); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架