mvc 返回json格式时间格式化

Posted 今晚再打老虎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mvc 返回json格式时间格式化相关的知识,希望对你有一定的参考价值。

 protected override JsonResult Json(object data, string contentType, System.Text.Encoding contentEncoding, JsonRequestBehavior behavior)
        {
            return new ToJsonResult
            {
                Data = data,
                ContentEncoding = contentEncoding,
                ContentType = contentType,
                JsonRequestBehavior = behavior,
                FormateStr = "yyyy-MM-dd HH:mm:ss"
            };
        }
        protected JsonResult MyJson(object data)
        {
            return new ToJsonResult
            {
                Data = data,
                FormateStr = "yyyy-MM-dd"
            };
        }
 /// <summary>
    /// 说明:转化为Jason
    /// 作者: CallmeYhz
    /// </summary>
    public class ToJsonResult : JsonResult
    {
        const string error = "该请求已被封锁,因为敏感信息透露给第三方网站,这是一个GET请求时使用的。为了可以GET请求,请设置JsonRequestBehavior AllowGet。";
        /// <summary>
        /// 格式化字符串
        /// </summary>
        public string FormateStr
        {
            get;
            set;
        }
        /// <summary>
        /// 说明:重写ExecueResult方法
        /// 作者:CallmeYhz    
        /// </summary>
        /// <param name="context"></param>
        public override void ExecuteResult(ControllerContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }
            if (JsonRequestBehavior == JsonRequestBehavior.DenyGet &&
                String.Equals(context.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase))
            {
                throw new InvalidOperationException(error);
            }
            HttpResponseBase response = context.HttpContext.Response;

            if (!String.IsNullOrEmpty(ContentType))
            {
                response.ContentType = ContentType;
            }
            else
            {
                response.ContentType = "application/json";
            }
            if (ContentEncoding != null)
            {
                response.ContentEncoding = ContentEncoding;
            }
            if (Data != null)
            {
                javascriptSerializer serializer = new JavaScriptSerializer();
                string jsonstring = serializer.Serialize(Data);
                //string hashOldPassword = @"\/Date((param+)+param+)\/";
                string p = @"\/Date(d+)\/";
                MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertJsonDateToDateString);
                Regex reg = new Regex(p);
                jsonstring = reg.Replace(jsonstring, matchEvaluator);
                response.Write(jsonstring);
            }
        }

        /// <summary>
        /// 说明:将Json序列化的时间由/Date(1294499956278+0800)转为字符串
        /// 作者:CallmeYhz   
        /// </summary>
        private string ConvertJsonDateToDateString(Match m)
        {
            string result = string.Empty;
            string p = @"d";
            var cArray = m.Value.ToCharArray();
            StringBuilder sb = new StringBuilder();
            Regex reg = new Regex(p);
            for (int i = 0; i < cArray.Length; i++)
            {
                if (reg.IsMatch(cArray[i].ToString()))
                {
                    sb.Append(cArray[i]);
                }
            }
            // reg.Replace(m.Value;
            DateTime dt = new DateTime(1970, 1, 1);
            dt = dt.AddMilliseconds(long.Parse(sb.ToString()));
            dt = dt.ToLocalTime();
            result = dt.ToString(this.FormateStr);
            return result;
        }
    }

将此代码添加到baseControle 中就可以了

以上是关于mvc 返回json格式时间格式化的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 MVC 控制器返回 JSON 用引号括起来且未格式化? [复制]

Spring mvc 返回json数组中的日期怎么格式化?

ASP.NET API(MVC) 对APP接口(Json格式)接收数据与返回数据的统一管理

如何在 ASP.NET MVC 中以 JSON 格式返回 500 错误?

@ResponseBody将集合数据转换为json格式并返回给客户端

spring Mvc json返回json的日期格式问题