You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#类蛇形命名字段API序列化时转换为驼峰命名的实现方法

实现方案

你可以根据项目所用的序列化库选择对应方案,两种方案都可以满足需求:

方案1:单个类专属配置(无全局影响,最稳妥,推荐优先使用)

直接给Project类的属性加序列化别名标签即可,不需要修改全局配置,不会影响其他接口的序列化逻辑:

如果你用的是.NET 内置的 System.Text.Json(.NET Core 3.0+ / .NET 5+ 默认)

using System.Text.Json.Serialization;

public class Project
{   
    [JsonPropertyName("projectId")]
    public int project_id { get; set; }
    [JsonPropertyName("accountId")]
    public long account_id { get; set; }
    [JsonPropertyName("userId")]
    public long user_id { get; set; }
    public string name { get; set; }
    public string description { get; set; }
    [JsonPropertyName("createdAt")]
    public DateTime created_at { get; set; }
    [JsonPropertyName("updatedAt")]
    public DateTime updated_at { get; set; }
}

如果你用的是 Newtonsoft.Json(Json.NET)

using Newtonsoft.Json;

public class Project
{   
    [JsonProperty("projectId")]
    public int project_id { get; set; }
    [JsonProperty("accountId")]
    public long account_id { get; set; }
    [JsonProperty("userId")]
    public long user_id { get; set; }
    public string name { get; set; }
    public string description { get; set; }
    [JsonProperty("createdAt")]
    public DateTime created_at { get; set; }
    [JsonProperty("updatedAt")]
    public DateTime updated_at { get; set; }
}

方案2:全局统一配置(适合项目所有类都是蛇形命名,需要统一转驼峰返回的场景)

如果项目内所有C#类的字段都是蛇形命名,需要全局统一转换为驼峰格式返回,可配置全局序列化规则:

基于 System.Text.Json 配置

  1. 先自定义蛇形转驼峰的命名策略:
using System.Text.Json;

public class SnakeToCamelNamingPolicy : JsonNamingPolicy
{
    public override string ConvertName(string name)
    {
        if (string.IsNullOrWhiteSpace(name) || !name.Contains('_'))
            return name;
        
        var segments = name.Split('_', StringSplitOptions.RemoveEmptyEntries);
        return segments[0].ToLowerInvariant() + 
               string.Concat(segments.Skip(1).Select(s => char.ToUpperInvariant(s[0]) + s[1..].ToLowerInvariant()));
    }
}
  1. 在Program.cs中注册全局序列化配置:
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.PropertyNamingPolicy = new SnakeToCamelNamingPolicy();
    });

// 其余配置不变
var app = builder.Build();
app.Run();

基于 Newtonsoft.Json 配置

  1. 先安装Microsoft.AspNetCore.Mvc.NewtonsoftJson Nuget包
  2. 在Program.cs中配置全局规则:
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers()
    .AddNewtonsoftJson(options =>
    {
        options.SerializerSettings.ContractResolver = new DefaultContractResolver
        {
            NamingStrategy = new CamelCaseNamingStrategy()
        };
        // 若默认驼峰策略不支持下划线转换,自定义NamingStrategy即可,逻辑和上述System.Text.Json的自定义策略一致
    });

// 其余配置不变
var app = builder.Build();
app.Run();

内容的提问来源于stack exchange,提问作者Shashwat Prakash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:39:01