1

我希望所有控制器结果上的驼峰式 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();
    }
}

但这会改变全局配置,因此在使用该属性调用任何控制器之后,我们将回到帕斯卡案例。

我如何才能修复默认为驼峰式大小写并显式修复某个控制器的 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);
    }
}
4

1 回答 1

0

更新 Json 格式化程序(您的第二个代码块)最适合解决不修改全局格式化程序状态的问题,因为您已经想到 + 内容协商、反序列化、帮助页面等功能也都考虑了每个控制器的配置。因此,在此处进行设置也可以很好地与其他功能集成。

于 2013-05-02T22:25:41.230 回答