news 2026/4/18 8:21:07

Java后端接口字段命名转换:蛇形与驼峰式自动映射技术

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java后端接口字段命名转换:蛇形与驼峰式自动映射技术

结论先行:

前端统一 snake_case,后端统一 camelCase,由 Jackson 全局自动完成双向映射。

这是Jackson 层面的统一协议问题,不应该在 DTO/VO 上“手工处理”。

在 大项目体量里,必须做到全局自动转换、零侵入、零重复注解

一、核心机制:Jackson 命名策略(双向自动)

Jackson 原生支持序列化 & 反序列化同时生效

场景行为
Request JSON → Java DTOaccess_tokenaccessToken
Java VO → Response JSONaccessTokenaccess_token

无需在字段上写任何注解

二、推荐方案(全局配置,唯一入口)

1. application.yml(首选,最干净)

spring:jackson:property-naming-strategy:SNAKE_CASE

这一行就够了。

2. 等价 Java 配置(如果你偏代码化)

@ConfigurationpublicclassJacksonConfig{@BeanpublicObjectMapperobjectMapper(){ObjectMappermapper=newObjectMapper();mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);returnmapper;}}

建议用yml,避免 ObjectMapper 多实例污染。

三、示例:LoginRequest / LoginVO

1. LoginRequest(后端代码,驼峰)

publicclassLoginRequest{privateStringaccount;privateStringpassword;privateStringloginType;}

前端请求 JSON(下划线)

{"account":"13800138000","password":"123456","login_type":"PASSWORD"}

Jackson 自动映射为:

loginRequest.getLoginType();// PASSWORD

2. LoginVO(后端代码,驼峰)

publicclassLoginVO{privateStringaccessToken;privateStringrefreshToken;privateLongexpiresIn;}

返回给前端 JSON(自动下划线)

{"access_token":"xxx","refresh_token":"yyy","expires_in":7200}

四、为什么这是大项目必须采用的方式

1. 前端世界就是 snake_case

  • iOS / Android / 小程序 / OpenAPI
  • 多语言 SDK 生成器默认 snake_case
  • JSON Schema / OpenAPI 更友好

2. Java 世界必须 camelCase

  • Lombok / Bean 规范
  • MyBatis / MapStruct
  • IDE 自动补全

3. 中间层自动转换,才是工业级解法

五、禁止的“反模式”(踩一个就会后悔)

❌ 每个字段写 @JsonProperty

@JsonProperty("access_token")privateStringaccessToken;

问题:

  • DTO 爆炸
  • 重构成本极高
  • 其他开发人员一定骂你

❌ Request / Response 分两套字段名

privateStringaccess_token;

问题:

  • Java 规范被破坏
  • IDE / Lombok / Mapper 全部痛苦

六、特殊情况如何处理(白名单)

1. 单字段例外

@JsonProperty("openid")privateStringopenId;

只在:

  • 第三方强绑定字段
  • 历史兼容接口

2. 禁止自动转换的字段

@JsonNaming(PropertyNamingStrategies.LowerCamelCaseStrategy.class)publicclassThirdPartyCallbackRequest{}

七、与 Swagger / OpenAPI 的一致性

启用后:

  • Swagger 显示字段名:access_token
  • 后端字段:accessToken
  • 文档 = 实际接口

八、最终统一规范(一句话版)

后端代码只写驼峰;
API 协议只暴露下划线;
Jackson 全局负责翻译。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 5:03:18

pdfmake中文显示终极解决方案:从乱码到完美排版

pdfmake中文显示终极解决方案:从乱码到完美排版 【免费下载链接】pdfmake Client/server side PDF printing in pure JavaScript 项目地址: https://gitcode.com/gh_mirrors/pd/pdfmake 在当今数字化的世界中,PDF文档已成为信息交换的重要载体。p…

作者头像 李华
网站建设 2026/4/18 5:07:38

办公室护眼小贴士

每天对着电脑敲键盘,还要刷手机回信息,打工人难免觉得眼睛干涩疲惫。别急!办公室护眼小贴士快点马住,一起跟着做来给眼睛充充电吧!最简单易坚持的小技巧——20-20-20护眼法则。每20分钟抬头看向20英尺即6米左右外的物体…

作者头像 李华
网站建设 2026/4/17 20:10:14

效率提升18倍成本直降90%:字节跳动SeedVR-3B重构视频修复行业标准

效率提升18倍成本直降90%:字节跳动SeedVR-3B重构视频修复行业标准 【免费下载链接】SeedVR-3B 项目地址: https://ai.gitcode.com/hf_mirrors/ByteDance-Seed/SeedVR-3B 导语 字节跳动开源的SeedVR-3B模型通过一步式扩散对抗后训练技术,将1080P…

作者头像 李华
网站建设 2026/4/18 7:01:07

终极跨平台WPF迁移指南:如何快速部署到macOS和Linux

终极跨平台WPF迁移指南:如何快速部署到macOS和Linux 【免费下载链接】Avalonia AvaloniaUI/Avalonia: 是一个用于 .NET 平台的跨平台 UI 框架,支持 Windows、macOS 和 Linux。适合对 .NET 开发、跨平台开发以及想要使用现代的 UI 框架的开发者。 项目地…

作者头像 李华
网站建设 2026/4/18 5:04:24

halcon刚性变换(平移+旋转)——vector_to_rigid

前言 在图像处理中我们有时候对图像或者区域进行纠偏,在刚性变换场景中,图像发生的变化是平移和旋转,本文就来介绍根据2个及2个以上目标点的平移来计算如何对图像和区域纠偏,这种方式的好处是你可以不需要知道角度的偏移。 1、h…

作者头像 李华
网站建设 2026/4/18 5:35:55

halcon求图像灰度最大值和最小值——min_max_gray

前言 我们在图像处理中有时候需要求图像的最小灰度和最大灰度,本文就来介绍如何实现。 1、halcon算子应用 dev_clear_window() gen_image_const (Image, byte, 3, 3) get_image_size (Image, Width, Height) for rowIndex : 1 to Height by 1for columnIndex : 1…

作者头像 李华