我想要一个特定的控制器返回一个字典
的所有控制器结果上的camel cased JSON我试过这个
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的情况。
我如何解决这个问题,默认是驼峰情况和明确修复某个控制器的Paascal案例?
编辑:这有效,但感觉有点落后
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);
}
}
答案 0 :(得分:0)
新建Json格式化程序(您的第二个代码块)最适合解决不修改全局格式化程序状态的问题,因为您已经想到了+内容协商,反序列化,帮助页面等功能也考虑了每个控制器的配置。因此,在此处设置您的设置也可以很好地与其他功能集成。