gpt4 book ai didi

asp.net-mvc-3 - 使用 JSON.NET 作为 ASP.NET MVC 3 中的默认 JSON 序列化器 - 可能吗?

转载 作者:行者123 更新时间:2023-12-03 04:49:54 25 4
gpt4 key购买 nike

是否可以使用JSON.NET作为 ASP.NET MVC 3 中的默认 JSON 序列化程序?

根据我的研究,似乎实现这一目标的唯一方法是 extend ActionResultJsonResult in MVC3 is not virtual ...

我希望通过 ASP.NET MVC 3 能够有一种方法来指定用于序列化为 JSON 的可插入提供程序。

想法?

最佳答案

我相信最好的方法是 - 正如链接中所述 - 直接扩展 ActionResult 或扩展 JsonResult。

至于 Controller 上不是虚拟的方法 JsonResult 是不正确的,只需选择正确的重载即可。这效果很好:

protected override JsonResult Json(object data, string contentType, Encoding contentEncoding)

编辑 1:JsonResult 扩展...

public class JsonNetResult : JsonResult
{
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
throw new ArgumentNullException("context");

var response = context.HttpContext.Response;

response.ContentType = !String.IsNullOrEmpty(ContentType)
? ContentType
: "application/json";

if (ContentEncoding != null)
response.ContentEncoding = ContentEncoding;

// If you need special handling, you can call another form of SerializeObject below
var serializedObject = JsonConvert.SerializeObject(Data, Formatting.Indented);
response.Write(serializedObject);
}

编辑2:我按照以下建议删除了对数据为空的检查。这应该会让新版本的 JQuery 满意,并且看起来是明智之举,因为响应可以无条件反序列化。但请注意,这不是 ASP.NET MVC 的 JSON 响应的默认行为,当没有数据时,它会使用空字符串进行响应。

关于asp.net-mvc-3 - 使用 JSON.NET 作为 ASP.NET MVC 3 中的默认 JSON 序列化器 - 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7109967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com