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

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

要实现该目标,须要完毕三个步骤的工作:

1、创建Controller的派生类。引入自己定义JsonResult

2、创建JsonResult的派生类。实现Json日期格式的自己定义实现

3、全部须要实现自己定义日期序列化格式的控制器,需继承于上述Controller的派生类

详细代码实现示比例如以下:

///
/// 通过重载ExecuteResult方法,实现自己定义序列化日期的实现
///
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));
        }
    }
}

///
/// 通过创建Controller的派生类来引入自己定义的Json实现
///
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 };
    }
}

///
/// 全部须要实现自己定义日期序列化效果的控制器。必须继承于VMEController
///
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 results = JsonHelper.DeserializeObject>(jsonResult);

        return Json(results, JsonRequestBehavior.AllowGet);
    }
}

Original: https://www.cnblogs.com/yfceshi/p/7400537.html
Author: yfceshi
Title: 通过自己定义MVC的Controller的Json转换器解决日期序列化格式问题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/554328/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Mybatis源码5 StatementHandler ,ParameterHandler

    Mybatis5 StatementHandler ,ParameterHandler 一丶概述 前面我们总结了SqlSession—>CachingExecut…

    技术杂谈 2023年7月25日
    0115
  • C# Task的用法详解 z

    1、Task的优势ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便。比如:◆ ThreadPool不支持线程的取消、完成、…

    技术杂谈 2023年6月1日
    092
  • 建造者模式详解

    建造者模式详解 1.1 建造者模式概述 1.1.1 定义 建造者模式(Builder Pattern)将一个复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示,…

    技术杂谈 2023年6月21日
    087
  • dup和dup2用法小结

    今天和同学探讨了一下关于重定向输出到文件的问题,其中需要用到dup和dup2函数,因此来小小的总结一下。 首先来man一下: dup直接返回一个新的描述符和原来的描述符一样代表同一…

    技术杂谈 2023年6月21日
    0100
  • ssh 连接远程主机使用 -v 选项提示错误

    ssh 连接远程主机使用 -v 选项提示错误: debug1: ssh2_msg_kexinit sent 可能是由于本机设置的 mtu 为1500,大于对端的 1454,因此导致…

    技术杂谈 2023年6月1日
    0107
  • Python 的排序方法 sort 和 sorted 的区别

    使用 sort() 或内建函数 sorted() 对列表进行排序。它们之间的区别有两点: sort() 方法是对原列表进行操作,而 sorted() 方法会返回一个新列表,不是在原…

    技术杂谈 2023年6月21日
    0121
  • H3C 802.1x认证接入过程

    posted @2019-09-22 22:20 樊伟胜 阅读(1039 ) 评论() 编辑 Original: https://www.cnblogs.com/fanweishe…

    技术杂谈 2023年5月30日
    086
  • 快速排序及优化

    快速排序 每次从当前考虑的数组中选一个元素,把这个元素想办法挪到应该排好序的位置,比如 4这个元素,它就有一个性质 4之前的元素都是小于它的,之后的元素都是大于它的,之后我们要做的…

    技术杂谈 2023年7月23日
    098
  • 自底向上:从可变对象、不可变对象到深浅拷贝再到数据结构

    一、不可变对象和可变对象** Python 在 heap 中分配的对象分成两类:可变对象和不可变对象。所谓可变对象是指,对象的内容是可变的,例如 list。而不可变的对象则相反,表…

    技术杂谈 2023年7月25日
    0118
  • 面试手撕并发算法题

    固定打印顺序 使用 wait-notify 实现以下功能:先打印 b,再打印 a 线程t1和t2同时运行,t1中打印 a,t2中打印 b,但 t1 打印得有个前提,就是 t1要在t…

    技术杂谈 2023年6月21日
    086
  • 2022年rhce最新认证—(满分通过)

    RHCE认证 重要配置信息 在考试期间,除了您就坐位置的台式机之外,还将使用多个虚拟系统。您不具有台式机系统的 root 访问权,但具有对虚拟系统的完整 root 访问权。 系统信…

    技术杂谈 2023年6月21日
    086
  • 硬核剖析Redis单线程为什么那么快?

    Redis目前是使用率最高的内存库数据库,是企业应用开发的必备,它极高的性能和丰富的数据结构为我们的开发提供了极大的便利。它每秒可以承受10W+的QPS,但却是单线程的处理模型,为…

    技术杂谈 2023年7月25日
    0112
  • 2019基于Hexo快速搭建个人博客,打造一个炫酷博客(1)-奥怪的小栈

    本文转载于:奥怪的小栈 这篇文章告诉你如何在2019快速上手搭建一个像我一样的博客:基于HEXO+Github搭建。并完成SEO优化,打造一个炫酷博客。 本站基于HEXO+Gith…

    技术杂谈 2023年6月21日
    0117
  • ArrayList和LinkedList的区别

    ArrayList和Vector使用了数组的实现,可以认为ArrayList或者Vector封装了对内部数组的操作,比如向数组中添加,删除,插入新的元素或者数据的扩展和重定向。 L…

    技术杂谈 2023年5月30日
    094
  • label文本框

    *label文本框私有属性 属性 说明 value 值,通用用$引用变量 prefix value的前缀 suffix value的后缀 lines 文本行数0或不设置,则默认1行…

    技术杂谈 2023年6月1日
    0108
  • Yolov3算法详解

    在本文开题处我们就说过,Yolo系列算法时一种典型的”一阶段”目标检测算法,这是Yolo最为出彩的设计,一次性即可完成对目标的定位和识别——这是RCNN等其…

    技术杂谈 2023年7月23日
    096
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球