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



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

我可以在整个项目中全局执行此操作吗?

如果要更改Newtonsoft.Json(又名 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 和 Web 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 核心以驼峰大小写格式序列化值。

对于 MVC 6.0.0-rc1-final

编辑启动.cs,在ConfigureServices(IserviceCollection)中,修改services.AddMvc();

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

ASP.NET CORE 1.0.0 Json 序列化具有默认的 camelCase。裁判此公告

如果要

在较新的 (vNext) C# 6.0 中执行此操作,则必须在位于 Startup.cs 类文件中的 ConfigureServices 方法中通过MvcOptions进行配置。

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

正如其他人指出的那样,驼峰是默认的。但是,如果您不希望到处都这样做,则可以像这样注释您的类。

using System.Text.Json.Serialization;
public class Developer
{
    [JsonPropertyName("Id")]
    public int Id { get; set; }
    [JsonPropertyName("FirstName")]
    public string? FirstName { get; set; }
    [JsonPropertyName("LastName")]
    public string? LastName { get; set; }
    [JsonPropertyName("RowNum")]
    public int RowNum { get; set; }
    [JsonPropertyName("StartDate")]
    public DateTime StartDate { get; set; }
}

相关内容

  • 没有找到相关文章

最新更新