Подтвердить что ты не робот

Web API сериализует свойства, начиная с буквы нижнего регистра

Как настроить сериализацию моего веб-API для использования имен свойств camelCase (начиная с строчной буквы) вместо PascalCase, как это показано на С#.

Могу ли я сделать это глобально для всего проекта?

4b9b3361

Ответ 1

Если вы хотите изменить поведение сериализации в Newtonsoft.Json aka JSON.NET, вам нужно создать свои настройки:

var jsonSerializer = JsonSerializer.Create(new JsonSerializerSettings 
{ 
    ContractResolver = new CamelCasePropertyNamesContractResolver(),
    NullValueHandling = NullValueHandling.Ignore // ignore null values
});

Вы также можете передать эти настройки в JsonConvert.SerializeObject:

JsonConvert.SerializeObject(objectToSerialize, serializerSettings);

Для ASP.NET MVC и веб-API. В Global.asax:

protected void Application_Start()
{
   GlobalConfiguration.Configuration
      .Formatters
      .JsonFormatter
      .SerializerSettings
      .ContractResolver = new CamelCasePropertyNamesContractResolver();
}

Исключить нулевые значения:

GlobalConfiguration.Configuration
    .Formatters
    .JsonFormatter
    .SerializerSettings
    .NullValueHandling = NullValueHandling.Ignore;

Указывает, что нулевые значения не должны включаться в результирующий JSON.

Ядро ASP.NET

Ядро ASP.NET по умолчанию сериализует значения в формате camelCase.

Ответ 2

Для MVC 6.0.0-rc1-final

Изменить Startup.cs, В ConfigureServices(IserviceCollection) изменить services.AddMvc();

services.AddMvc(options =>
{
    var formatter = new JsonOutputFormatter
    {
        SerializerSettings = {ContractResolver = new CamelCasePropertyNamesContractResolver()}
    };
    options.OutputFormatters.Insert(0, formatter);
});

Ответ 4

Если вы хотите сделать это в новом (vNext) С# 6.0, вам нужно настроить его с помощью MvcOptions в методе ConfigureServices, расположенном в файле класса Startup.cs.

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