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

Spring Boot/Jackson:如何将蛇形命名模型序列化为驼峰命名?

解决方案:统一将蛇形命名模型序列化为驼峰格式返回

这问题我做GraphQL集成的时候也碰到过,刚好有几个不用逐个字段加注解的方案,完美适配你的场景:

方案1:Spring Boot全局Jackson配置(最推荐)

Spring Boot默认用Jackson处理JSON序列化/反序列化,你只需要在配置文件里加一行全局配置,就能让所有蛇形命名的字段自动转为驼峰格式输出,完全不用修改生成的模型类:

用application.yml配置:

spring:
  jackson:
    property-naming-strategy: LOWER_CAMEL_CASE

用application.properties配置:

spring.jackson.property-naming-strategy=LOWER_CAMEL_CASE

这个配置会让Jackson自动把所有下划线分隔的字段名(比如my_string)转换成小驼峰格式(myString)输出给客户端。如果你的项目里还有其他需要保持蛇形输出的类,可以单独给那些类加@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)来覆盖全局配置。

方案2:给生成的模型类统一加类级注解

如果全局配置会影响其他业务类,你可以给每个graphql-java-codegen生成的模型类加上@JsonNaming注解,指定驼峰命名策略:

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;

@JsonNaming(PropertyNamingStrategies.LowerCamelCaseStrategy.class)
public class GeneratedModel {
    private String my_string;
    // 其他字段和getter/setter
}

虽然你说无法修改模型生成配置,但如果能通过代码生成的模板(比如graphql-java-codegen支持自定义模板)或者批量脚本给所有生成的类加上这个注解,也是可行的。这个方案只会影响加了注解的模型类,不会干扰其他类的序列化规则。

注意事项

  • 确保你的REST控制器用的是@RestController(默认用Jackson序列化),如果用了其他序列化框架(比如Gson),配置方式会不一样。
  • 如果生成的模型类里已经有个别字段加了@JsonProperty,那这个注解会覆盖全局或类级的命名策略,但你说不会给每个字段加,所以不用考虑这个冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 17:10:51