【发布时间】:2018-05-09 03:26:13
【问题描述】:
我想仅为我的一个控制器更改传入请求的反序列化格式。所以我把它添加到我的Global.asax 中,它工作得很好:
HttpConfiguration config = GlobalConfiguration.Configuration;
config.Formatters.JsonFormatter.SerializerSettings = new Newtonsoft.Json.JsonSerializerSettings
{
ContractResolver = new DefaultContractResolver
{
NamingStrategy = new SnakeCaseNamingStrategy()
}
};
但它将更改应用于所有控制器。我只想将它应用于我的一个控制器。我还找到了this 的答案,我根据那个写了这段代码:
public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
{
var formatter = controllerSettings.Formatters.OfType<JsonMediaTypeFormatter>().Single();
controllerSettings.Formatters.Remove(formatter);
formatter = new JsonMediaTypeFormatter
{
SerializerSettings = { ContractResolver = new DefaultContractResolver { NamingStrategy = new SnakeCaseNamingStrategy() } }
};
controllerSettings.Formatters.Add(formatter);
}
但不幸的是,它仅适用于序列化输出。有没有办法定义它来反序列化输入?
【问题讨论】:
标签: c# asp.net-web-api serialization json.net asp.net-web-api2