博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp mvc 中重写JsonResult,解决Json返回值序列化问题
阅读量:4967 次
发布时间:2019-06-12

本文共 2709 字,大约阅读时间需要 9 分钟。

1、先新建一个 JsonConvertResult:JsonResult,继承自JsonResult;

public class JsonConvertResult : JsonResult    {        ///         /// 格式化字符串        ///         public string FormateStr        {            get;            set;        }        ///         /// 重写执行视图        ///         /// 上下文        public override void ExecuteResult(ControllerContext context)        {            if (context == null)            {                throw new ArgumentNullException("context");            }            HttpResponseBase response = context.HttpContext.Response;            if (!string.IsNullOrEmpty(this.ContentType))            {                response.ContentType = this.ContentType;            }            else            {                response.ContentType = "application/json";                //response.setContentType("text/html;charset=utf-8");            }            if (this.ContentEncoding != null)            {                response.ContentEncoding = this.ContentEncoding;            }            if (this.Data != null)            {                JavaScriptSerializer jss = new JavaScriptSerializer();                string jsonString = jss.Serialize(Data);                string p = @"\\/Date\((\d+)\)\\/";                MatchEvaluator matchEvaluator = new MatchEvaluator(this.ConvertJsonDateToDateString);                Regex reg = new Regex(p);                jsonString = reg.Replace(jsonString, matchEvaluator);                JsonSerializerSettings set = new JsonSerializerSettings();                set.NullValueHandling = NullValueHandling.Ignore;                //string jsonString = ExtJsonManager.SerializeObject(Data);                response.Write(jsonString);            }        }        ///           /// 将Json序列化的时间由/Date(1294499956278)转为字符串 .        ///           /// 正则匹配        /// 
格式化后的字符串
private string ConvertJsonDateToDateString(Match m) { string result = string.Empty; DateTime dt = new DateTime(1970, 1, 1); dt = dt.AddMilliseconds(long.Parse(m.Groups[1].Value)); dt = dt.ToLocalTime(); result = dt.ToString(FormateStr); return result; } }

2、BaseController中重写Json返回值方法就可以了。

protected override JsonResult Json(object data, string contentType, System.Text.Encoding contentEncoding, JsonRequestBehavior behavior)        {            return new JsonConvertResult            {                Data = data,                ContentType = contentType,                ContentEncoding = contentEncoding,                JsonRequestBehavior = behavior,                FormateStr = "yyyy-MM-dd HH:mm:ss"            };        }

 

转载于:https://www.cnblogs.com/tiggerinchengdu/p/4500157.html

你可能感兴趣的文章
前端利器躬行记(1)——npm
查看>>
前端利器躬行记(2)——Babel
查看>>
前端利器躬行记(3)——webpack基础
查看>>
前端利器躬行记(4)——webpack进阶
查看>>
前端利器躬行记(5)——Git
查看>>
前端利器躬行记(6)——Fiddler
查看>>
每次阅读外文技术资料都头疼,终于知道原因了。
查看>>
zabbix短信网关调用问题总结
查看>>
130242014034-林伟领-实验一
查看>>
Forbidden You don't have permission to access / on this server.
查看>>
Windows server 2008 R2中安装MySQL !
查看>>
Intellij Idea新建web项目(转)
查看>>
raspberry 安装apache2,使其支持ssl ,并创建自签名证书
查看>>
Trie树:应用于统计和排序
查看>>
C语言结构体和函数
查看>>
[BZOJ3449] [Usaco2014 Feb]Secret Code
查看>>
XHTML与HTML区别
查看>>
软考-程序设计语言基础(编译原理)
查看>>
2016峰会:项目管理与高级项目管理(广州站)
查看>>
用JAVA编写浏览器内核之实现javascript的document对象与内置方法
查看>>