Hoe kan ik de serialisatie van mijn Web API configureren om camelCase
(beginnend met kleine letters) eigenschapsnamen te gebruiken in plaats van PascalCase
zoals in C#.
Kan ik het globaal doen voor het hele project?
Antwoord 1, autoriteit 100%
Als u het serialisatiegedrag in Newtonsoft.Json, ook bekend als JSON.NET, wilt wijzigen, moet u uw instellingen maken:
var jsonSerializer = JsonSerializer.Create(new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
NullValueHandling = NullValueHandling.Ignore // ignore null values
});
U kunt deze instellingen ook doorgeven aan JsonConvert.SerializeObject
:
JsonConvert.SerializeObject(objectToSerialize, serializerSettings);
Voor ASP.NET MVC en Web API. In Global.asax:
protected void Application_Start()
{
GlobalConfiguration.Configuration
.Formatters
.JsonFormatter
.SerializerSettings
.ContractResolver = new CamelCasePropertyNamesContractResolver();
}
Null-waarden uitsluiten:
GlobalConfiguration.Configuration
.Formatters
.JsonFormatter
.SerializerSettings
.NullValueHandling = NullValueHandling.Ignore;
Geeft aan dat null-waarden niet mogen worden opgenomen in de resulterende JSON.
ASP.NET Core
ASP.NET Core serialiseert standaard waarden in camelCase-indeling.
Antwoord 2, autoriteit 6%
Voor MVC 6.0.0-rc1-finale
Bewerk Startup.cs, wijzig in ConfigureServices(IserviceCollection)
services.AddMvc();
services.AddMvc(options =>
{
var formatter = new JsonOutputFormatter
{
SerializerSettings = {ContractResolver = new CamelCasePropertyNamesContractResolver()}
};
options.OutputFormatters.Insert(0, formatter);
});
Antwoord 3, autoriteit 2%
ASP.NET CORE 1.0.0 Json-serialisaties hebben standaard camelCase.
Raadpleeg deze aankondiging
Antwoord 4
Als u dit in de nieuwere (vNext) C# 6.0 wilt doen, moet u dit configureren via MvcOptions
in de ConfigureServices
-methode in de Startup.cs
klassebestand.
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);
});