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

我很难find答案:

我正在处理已经部分转换为MVC的现有应用程序。 每当一个控制器响应一个JSON ActionResult时,这个枚举就会被发送为与string名称相反的数字。 这听起来像默认的序列化程序应该是JSON.Net,它应该是发送枚举作为他们的名字相反的整数表示,但这不是这种情况。

我是否缺less一个web.config设置,将其设置为默认序列化程序? 还是有另一个需要改变的设置?

在ASP.Net MVC4中, JsonResult类中使用的默认JavaScript序列化程序仍然是JavaScriptSerializer (您可以在代码中检查它)

我认为你已经把它与ASP.Net Web.API混淆,其中JSON.Net是默认的JS序列化器,但是MVC4并没有使用它。

所以你需要configurationJSON.Net来使用MVC4(基本上你需要创build你自己的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