Web API从小写字母开始序列化属性

And*_*rei 52 .net c# asp.net-mvc json.net asp.net-web-api

如何配置我的Web API的序列化以使用camelCase(从小写字母开始)属性名称而不是PascalCase像在C#中那样.

我可以为整个项目全球化吗?

And*_*rei 88

如果要在Newtonsoft.Json(即JSON.NET)中更改序列化行为,则需要创建设置:

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

您还可以将这些设置传递到JsonConvert.SerializeObject:

JsonConvert.SerializeObject(objectToSerialize, serializerSettings);
Run Code Online (Sandbox Code Playgroud)

对于ASP.NET MVC和Web API.在Global.asax中:

protected void Application_Start()
{
   GlobalConfiguration.Configuration
      .Formatters
      .JsonFormatter
      .SerializerSettings
      .ContractResolver = new CamelCasePropertyNamesContractResolver();
}
Run Code Online (Sandbox Code Playgroud)

排除空值:

GlobalConfiguration.Configuration
    .Formatters
    .JsonFormatter
    .SerializerSettings
    .NullValueHandling = NullValueHandling.Ignore;
Run Code Online (Sandbox Code Playgroud)

指示结果JSON中不应包含空值.

ASP.NET核心

默认情况下,ASP.NET Core以camelCase格式序列化值.


Jon*_*Jon 6

对于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);
});
Run Code Online (Sandbox Code Playgroud)