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

如何全局实现JSON序列化与模型绑定的小写蛇形命名?

问题原因与解决方案

你当前的代码只配置了枚举类型的序列化规则,并没有设置普通类属性的全局命名策略,所以移除JsonPropertyName后,属性还是默认的驼峰命名。

要实现普通属性自动转为小写蛇形命名,需要在JsonSerializerOptions中额外设置PropertyNamingPolicy,修改后的完整代码如下:

builder.Services.AddControllers()
.AddJsonOptions(options =>
{
    // 全局设置:普通属性转为小写蛇形命名
    options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower;
    
    // 枚举类型序列化为小写蛇形字符串
    options.JsonSerializerOptions.Converters.Add(
        new JsonStringEnumConverter(JsonNamingPolicy.SnakeCaseLower, false));
});

说明:

  • PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower:这行是核心配置,它会让所有未被JsonPropertyName标记的类属性,在序列化时自动转换为小写蛇形命名(比如StateId→state_id,EntityName→entity_name)。
  • 保留的JsonStringEnumConverter负责把枚举值也转为小写蛇形字符串(比如枚举值OrderState.WaitingForPayment会序列化为waiting_for_payment)。

如果后续有个别属性需要脱离全局规则,直接给该属性加上JsonPropertyName即可,它会覆盖全局配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:02:39