Web API serialiseert eigenschappen beginnend met kleine letter

Hoe kan ik de serialisatie van mijn Web API configureren om camelCase(beginnend met kleine letters) eigenschapsnamen te gebruiken in plaats van PascalCasezoals 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 MvcOptionsin de ConfigureServices-methode in de Startup.csklassebestand.

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

Other episodes