栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

MVC 4中正确的JSON序列化

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MVC 4中正确的JSON序列化

我建议使用诸如ServiceStack或Json.NET之类的东西来处理MVC应用程序中的Json输出。但是,您可以轻松地编写一个类,并使用基类覆盖Json方法。请参阅下面的示例。

注意:这样,您在Global.ascx.cs文件中不需要任何内容​​。

自定义JsonDotNetResult类:

public class JsonDotNetResult : JsonResult{    private static readonly JsonSerializerSettings Settings = new JsonSerializerSettings    {        ContractResolver = new CamelCasePropertyNamesContractResolver(),        Converters = new List<JsonConverter> { new StringEnumConverter() }    };    public override void ExecuteResult(ControllerContext context)    {        if (this.JsonRequestBehavior == JsonRequestBehavior.DenyGet && string.Equals(context.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase))        { throw new InvalidOperationException("GET request not allowed");        }        var response = context.HttpContext.Response;        response.ContentType = !string.IsNullOrEmpty(this.ContentType) ? this.ContentType : "application/json";        if (this.ContentEncoding != null)        { response.ContentEncoding = this.ContentEncoding;        }        if (this.Data == null)        { return;        }        response.Write(JsonConvert.SerializeObject(this.Data, Settings));    }}

基本控制器类:

public abstract class Controller : System.Web.Mvc.Controller{    protected override JsonResult Json(object data, string contentType, System.Text.Encoding contentEncoding, JsonRequestBehavior behavior)    {        return new JsonDotNetResult {     Data = data,     ContentType = contentType,     ContentEncoding = contentEncoding,     JsonRequestBehavior = behavior };    }}

现在,在控制器操作上,您只需返回类似的内容即可。

return Json(myObject, JsonRequestBehavior.AllowGet);

BAM。现在,您有了Json返回的驼峰对象:)

注意:有多种方法可以使用Json制作的每个对象上的Serializer设置进行操作。但是,每当您想返回Json时,谁愿意输入该信息?



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/568438.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号