您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

MVC 4中正确的JSON序列化

MVC 4中正确的JSON序列化

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

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

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时,谁愿意输入该信息?

其他 2022/1/1 18:15:53 有422人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶