news 2026/8/22 2:57:54

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/8/21 15:02:49

如何彻底移除Windows Defender:2025年系统优化实战手册

如何彻底移除Windows Defender:2025年系统优化实战手册 【免费下载链接】windows-defender-remover 项目地址: https://gitcode.com/gh_mirrors/win/windows-defender-remover 你是否正在为Windows Defender频繁的系统扫描而烦恼?是否在追求极致…

作者头像 李华
网站建设 2026/8/21 16:22:51

零基础学习unzip:从安装到实战图解指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 制作一个面向Linux初学者的交互式学习教程,包含:1)unzip安装方法(各Linux发行版) 2)5个最基础命令示例 3)常见错误及解决方法 4)简单练习题。要求使用对话式…

作者头像 李华
网站建设 2026/8/21 19:52:33

React Scan实战指南:零代码解决React性能瓶颈的终极方案

React Scan实战指南:零代码解决React性能瓶颈的终极方案 【免费下载链接】react-scan React Scan 主要功能是自动检测 React 应用中的性能问题。无需更改代码就能使用,能精准高亮需要优化的组件,还可通过脚本标签、npm、CLI 等多种方式使用&a…

作者头像 李华
网站建设 2026/8/22 0:36:22

高效下载B站视频:BiliDownloader专业使用手册

想要轻松保存B站上的精彩视频内容?BiliDownloader这款界面精简、操作简单且高速下载的B站视频下载工具,让你在几分钟内掌握B站视频下载的全部技巧。无论是UP主的优质教学视频、珍贵的回忆片段,还是想要离线观看的娱乐内容,这款工具…

作者头像 李华
网站建设 2026/8/22 0:12:58

IEC60335-1-2020中文标准获取全攻略

IEC60335-1-2020中文标准获取全攻略 【免费下载链接】IEC60335-1-2020中文版下载分享 IEC60335-1-2020中文版下载 项目地址: https://gitcode.com/Open-source-documentation-tutorial/2e087 还在为找不到权威的家电安全标准而烦恼吗?这里为您提供IEC60335-1…

作者头像 李华