0Day Forums
Force CamelCase on ASP.NET WebAPI Per Controller - Printable Version

+- 0Day Forums (https://0day.red)
+-- Forum: Coding (https://0day.red/Forum-Coding)
+--- Forum: Asp.Net (https://0day.red/Forum-Asp-Net)
+--- Thread: Force CamelCase on ASP.NET WebAPI Per Controller (/Thread-Force-CamelCase-on-ASP-NET-WebAPI-Per-Controller)



Force CamelCase on ASP.NET WebAPI Per Controller - expectation462400 - 07-22-2023

In ASP.NET WebAPI, I know you can set the default json formatter to use camel case using [CamelCasePropertyNamesContractResolver()][1] in the global.aspx which will force ALL json serialization to camel case.

However, I need to be able to set it on a "Per Controller" instance, instead of a Global solution.

Is this possible?


[1]:

[To see links please register here]




RE: Force CamelCase on ASP.NET WebAPI Per Controller - incompatibilitys523092 - 07-22-2023

This Stack Overflow [answer][1] should be helpful. It shows you how to create an ActionFilter which can be applied to any action where you wish to use CamelCasing.


[1]:

[To see links please register here]




RE: Force CamelCase on ASP.NET WebAPI Per Controller - consumerist200893 - 07-22-2023

Yes, it's possible...you can use `IControllerConfiguration` to define per-controller specific configuration..

[This][1] is a sample which describes this scenario. You can quickly take a look at how this interface should be used over [here][2](from the sample).


[1]:

[To see links please register here]

[2]:

[To see links please register here]




RE: Force CamelCase on ASP.NET WebAPI Per Controller - franhnkocxhisd - 07-23-2023

Thanks to @KiranChalla I was able to achieve this easier than I thought.

Here is the pretty simple class I created:

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);

}
}

Then just add the attribute to any Controller class you want CamelCase.

[CamelCaseControllerConfig]



RE: Force CamelCase on ASP.NET WebAPI Per Controller - Mrsubmariner3 - 07-23-2023

I know this is pretty old, but I had a problem with the accepted answer because there were other necessary changes to the formatter that were no longer present after removing and re-adding. I did this by just modifying the existing formatter as shown in this Gist: .