How can I configure serialization of my Web API to use camelCase
(starting from lowercase letter) property names instead of PascalCase
like it is i
If you want to do this in the newer (vNext) C# 6.0, then you have to configure this through MvcOptions
in the ConfigureServices
method located in the Startup.cs
class file.
services.AddMvc().Configure<MvcOptions>(options =>
{
var jsonOutputFormatter = new JsonOutputFormatter();
jsonOutputFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
jsonOutputFormatter.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Ignore;
options.OutputFormatters.Insert(0, jsonOutputFormatter);
});
For MVC 6.0.0-rc1-final
Edit Startup.cs, In the ConfigureServices(IserviceCollection)
, modify services.AddMvc();
services.AddMvc(options =>
{
var formatter = new JsonOutputFormatter
{
SerializerSettings = {ContractResolver = new CamelCasePropertyNamesContractResolver()}
};
options.OutputFormatters.Insert(0, formatter);
});
If you want to change serialization behavior in Newtonsoft.Json aka JSON.NET, you need to create your settings:
var jsonSerializer = JsonSerializer.Create(new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
NullValueHandling = NullValueHandling.Ignore // ignore null values
});
You can also pass these settings into JsonConvert.SerializeObject
:
JsonConvert.SerializeObject(objectToSerialize, serializerSettings);
protected void Application_Start()
{
GlobalConfiguration.Configuration
.Formatters
.JsonFormatter
.SerializerSettings
.ContractResolver = new CamelCasePropertyNamesContractResolver();
}
Exclude null values:
GlobalConfiguration.Configuration
.Formatters
.JsonFormatter
.SerializerSettings
.NullValueHandling = NullValueHandling.Ignore;
Indicates that null values should not be included in resulting JSON.
ASP.NET Core by default serializes values in camelCase format.
ASP.NET CORE 1.0.0 Json serializes have default camelCase. Referee this Announcement