在ASP.NET WebAPI中,我知道您可以将默认的json格式化程序设置为使用驼峰大小写,在global.aspx中使用CamelCasePropertyNamesContractResolver(),这将强制所有的json序列化都使用驼峰大小写.
但是,我需要能够将其设置为"每个控制器"实例,而不是全局解决方案.
这可能吗?
在ASP.NET WebAPI中,我知道您可以将默认的json格式化程序设置为使用驼峰大小写,在global.aspx中使用CamelCasePropertyNamesContractResolver(),这将强制所有的json序列化都使用驼峰大小写.
但是,我需要能够将其设置为"每个控制器"实例,而不是全局解决方案.
这可能吗?
多亏了@KiranChalla,我能够实现这一点比我想象的要容易.
下面是我创建的非常简单的类:
using System;
using System.Linq;
using System.Web.Http.Controllers;
using System.Net.Http.Formatting;
using Newtonsoft.Json.Serialization;
public class CamelCaseControllerConfigAttribute : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
{
var formatter = controllerSettings.Formatters.OfType<JsonMediaTypeFormatter>().Single();
controllerSettings.Formatters.Remove(formatter);
formatter = new JsonMediaTypeFormatter
{
SerializerSettings = {ContractResolver = new CamelCasePropertyNamesContractResolver()}
};
controllerSettings.Formatters.Add(formatter);
}
}
然后只需将该属性添加到您想要的任何控制器类中.
[CamelCaseControllerConfig]