前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自己写的一个json序列化类

自己写的一个json序列化类

原创
作者头像
用户4831957
修改2019-12-02 17:32:57
6120
修改2019-12-02 17:32:57
举报

由于公司最近项目用到asp.net的mvc框架,在使用过程中发现一个问题,对<<dynamic>,List<dynamic>这类集合进行序列化的时候,前端获取的数据格式非常怪异。

代码语言:javascript
复制
 [AjaxOnly]
 [HttpGet]
 public virtual JsonResult ListData()
 {
 .....
 IEnumerable<dynamic> dataList = ListBll.List(MvcContext);、、
 return Json(dataList);
 }

研究了mvc的文档后,决定对用大名鼎鼎的 NewtonJson重写Json方法,首先定义一个类,并继承JsonResult,代码如下:

代码语言:javascript
复制
using PageAdmin.Utils;

namespace System.Web.Mvc
{

 //采用Newtonsoft.Json定义新的Jsonresult,默认的JsonResult采用微软自带的系列化,对IEnumerable<dynamic>类型数据序列化后格式混乱。
 public class NewtonJson:JsonResult
 {
 public override void ExecuteResult(ControllerContext context)
 {
 if (context == null)
 throw new ArgumentNullException("context");

 if (context.HttpContext == null || context.HttpContext.Response == null)
 return;
 context.HttpContext.Response.ContentType = !string.IsNullOrEmpty(ContentType) ? ContentType : "application/json";
 if (ContentEncoding != null)
 context.HttpContext.Response.ContentEncoding = ContentEncoding;
 if (Data != null)
 context.HttpContext.Response.Write(JsonHelper.JsonParse(Data));
 }

 internal static JsonResult Json(object data)
 {
 var jsonResult = new NewtonJson()
 {
 Data = data,
 JsonRequestBehavior = JsonRequestBehavior.AllowGet,
 ContentType = "application/json;charset=utf-8",
 };
 return jsonResult;
 }

 }
}

然后再控制器中重写Json方法。

代码语言:javascript
复制
 protected JsonResult NewJson(object data)
 {
 return NewtonJson.Json(data);
 }

以后凡是需要系列化的直接用NewJson方法即可。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档