在ASP.NET MVC中设置默认的JSON序列化器

我正在处理已部分转换为MVC的现有应用程序。每当控制器以JSON

ActionResult响应时,枚举都以与字符串名称相对的数字发送。听起来好像默认的序列化程序应该是JSON.Net,它应该将枚举作为其名称发送,而不是整数表示形式,但这不是这种情况。

我是否缺少将其设置为默认序列化程序的web.config设置?还是还有其他需要更改的设置?

回答:

在ASP.Net

MVC4中,JsonResult该类中使用的默认JavaScript序列化器仍然是JavaScriptSerializer(可以在代码中进行检查)。

我认为您已经将它与ASP.Net Web.API混淆了,其中JSON.Net是默认的JS序列化器,但MVC4不使用它。

因此,您需要将JSON.Net配置为与MVC4配合使用(基本上,您需要创建自己的JsonNetResult),有关它的文章很多:

  • ASP.NET MVC和Json.NET
  • 使用JSON.NET作为ASP.NET MVC 3中的默认JSON序列化程序-可以吗?

如果还希望将JSON.Net用于控制器操作参数,那么在模型绑定期间,则需要编写自己的ValueProviderFactory实现。

您需要向以下位置注册实现:

ValueProviderFactories.Factories

.Remove(ValueProviderFactories.Factories

.OfType<JsonValueProviderFactory>().Single());

ValueProviderFactories.Factories.Add(new MyJsonValueProviderFactory());

您可以使用内置JsonValueProviderFactory示例或本文作为示例: ASP.NET MVC 3

–使用Json.Net改进的JsonValueProviderFactory

以上是 在ASP.NET MVC中设置默认的JSON序列化器 的全部内容, 来源链接: utcz.com/qa/409697.html

回到顶部