Web API serialize properties starting from lowercase letter
Solution 1
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);
For ASP.NET MVC and Web API. In Global.asax:
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
ASP.NET Core by default serializes values in camelCase format.
Solution 2
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);
});
Solution 3
ASP.NET CORE 1.0.0 Json serializes have default camelCase. Referee this Announcement
Solution 4
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);
});
Andrei
There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors. .NET, Azure, ASP.NET MVC, JavaScript, React-Native
Updated on July 09, 2022Comments
-
Andrei almost 2 years
How can I configure serialization of my Web API to use
camelCase
(starting from lowercase letter) property names instead ofPascalCase
like it is in C#.Can I do it globally for the whole project?
-
fiat over 8 yearsmvc6 snippet doesn't work for me on beta6? My
IActionsResult
method returnsJson(listItems)
with PascalCase -
Chris Woolum over 8 yearsfor beta6, you need
services.AddMvc().Configure<MvcOptions>(options => { var formatter = options.OutputFormatters.FirstOrDefault(f => f is JsonOutputFormatter) as JsonOutputFormatter; formatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); formatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; });
-
juan carlos peña cabrera about 2 yearsso what is the solution to change from { MyProp: ''} to { myProp: ''}