Asp.net web api CamelCase json默认值,但不适用于specfic控制器
我希望对所有控制器结果使用驼峰大小写的JSON,除了返回字典的特定控制器 我试过这个Asp.net web api CamelCase json默认值,但不适用于specfic控制器,asp.net-web-api,Asp.net Web Api,我希望对所有控制器结果使用驼峰大小写的JSON,除了返回字典的特定控制器 我试过这个 public class PascalCaseConfigAttribute : Attribute, IControllerConfiguration { public void Initialize(HttpControllerSettings config, HttpControllerDescriptor controllerDescript
public class PascalCaseConfigAttribute : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings config,
HttpControllerDescriptor controllerDescriptor)
{
var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().Single();
jsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();
}
}
但这会改变全局配置,因此在使用该属性调用任何控制器后,我们将返回到Pascal案例
我如何修复某个控制器的默认情况是camel case和explicit fix Paascal case
编辑:这很有效,但感觉有点落后
public class PascalCaseConfigAttribute : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings config,
HttpControllerDescriptor controllerDescriptor)
{
var formatter = config.Formatters.OfType<JsonMediaTypeFormatter>().Single();
config.Formatters.Remove(formatter);
formatter = new JsonMediaTypeFormatter();
formatter.SerializerSettings.ContractResolver = new DefaultContractResolver();
config.Formatters.Add(formatter);
}
}
更新JSON格式化程序,您的第二个代码块最适合于解决不修改全局格式化程序状态的问题,如图中的内容协商、反序列化、帮助页都可以考虑每个控制器配置。因此,这里的设置与其他功能也能很好地集成。
此线程的第一个答案听起来是一个合理的解决方案:是的,我正在使用上面的方法;