Asp.net mvc 项目返回Json

因mvc控制器返回类型JsonResult 在处理对象转JSON的时候,对日期的格式化处理并不太符合要求,所以重新继承抽象类ActionResult使用Newtonsoft.Json来系列化

using System;
using System.Text;
using System.Web;
using System.Web.Mvc;
using Newtonsoft.Json;

namespace Comon
{
    public class JsonNetResult : ActionResult
    {
        /// 
        ///     在静态构造函数中设置JsonNet的时间处理方式
        /// 
        static JsonNetResult()
        {
            JsonSerializerSettings settings = new JsonSerializerSettings();
            JsonConvert.DefaultSettings = () =>
            {
                //日期类型默认格式化处理
                settings.DateFormatHandling = DateFormatHandling.MicrosoftDateFormat;
                settings.DateFormatString = "yyyy-MM-dd HH:mm:ss";

                return settings;
            };
        }

        /// 初始化  类的新实例。
        public JsonNetResult()
        {
            JsonRequestBehavior = JsonRequestBehavior.AllowGet;
        }

        /// 获取或设置内容编码。
        /// 内容编码。
        public Encoding ContentEncoding { get; set; }

        /// 获取或设置内容的类型。
        /// 内容的类型。
        public string ContentType { get; set; }

        /// 获取或设置数据。
        /// 数据。
        public object Data { get; set; }

        /// 获取或设置一个值,该值指示是否允许来自客户端的 HTTP GET 请求。
        /// 一个值,指示是否允许来自客户端的 HTTP GET 请求。
        public JsonRequestBehavior JsonRequestBehavior { get; set; }


        /// 通过从  类继承的自定义类型,启用对操作方法结果的处理。
        /// 执行结果时所处的上下文。
        /// 
        ///      参数为 null。
        /// 
        public override void ExecuteResult(ControllerContext context)
        {
            if (context == null)
                throw new ArgumentNullException(nameof(context));
            if (JsonRequestBehavior == JsonRequestBehavior.DenyGet &&
                string.Equals(context.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase))
                throw new InvalidOperationException("不允许使用Get方法访问");
            HttpResponseBase response = context.HttpContext.Response;
            response.ContentType = string.IsNullOrEmpty(ContentType) ? "application/json" : ContentType;
            if (ContentEncoding != null)
                response.ContentEncoding = ContentEncoding;
            if (Data == null)
                return;

            response.Write(JsonConvert.SerializeObject(Data));
        }
    }
}

在静态构造函数里面设置了系列化日期的格式

转载于:https://www.cnblogs.com/tangchun/p/10482768.html

你可能感兴趣的:(Asp.net mvc 项目返回Json)