在ASP.NET WebAPI中,我知道您可以设置默认的json格式化程序,以便在global.aspx中使用CamelCasePropertyNamesContractResolver()来使用驼峰大小写,这会强制所有json序列化为驼峰大小写。
但是,我需要能够在“Per Controller”实例上设置它,而不是全局解决方案。
这可能吗?
答案 0 :(得分:64)
感谢@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);
}
}
然后只需将该属性添加到您想要CamelCase的任何Controller类。
[CamelCaseControllerConfig]
答案 1 :(得分:10)
答案 2 :(得分:4)
此Stack Overflow answer应该会有所帮助。它向您展示了如何创建一个ActionFilter,它可以应用于您希望使用CamelCasing的任何操作。
答案 3 :(得分:0)
我知道这已经很老了,但我对接受的答案有疑问,因为格式化程序有其他必要的更改,删除和重新添加后不再存在。我这样做只是修改现有的格式化程序,如本Gist所示:https://gist.github.com/mauricedb/5356933。