在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