在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