别再手搓IIC了!用这个Verilog状态机模块,轻松搞定FPGA与AT24C04通信
2026/5/12 11:18:58
结论先行:
前端统一 snake_case,后端统一 camelCase,由 Jackson 全局自动完成双向映射。
这是Jackson 层面的统一协议问题,不应该在 DTO/VO 上“手工处理”。
在 大项目体量里,必须做到全局自动转换、零侵入、零重复注解。
Jackson 原生支持序列化 & 反序列化同时生效。
| 场景 | 行为 |
|---|---|
| Request JSON → Java DTO | access_token→accessToken |
| Java VO → Response JSON | accessToken→access_token |
无需在字段上写任何注解。
spring:jackson:property-naming-strategy:SNAKE_CASE这一行就够了。
@ConfigurationpublicclassJacksonConfig{@BeanpublicObjectMapperobjectMapper(){ObjectMappermapper=newObjectMapper();mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);returnmapper;}}建议用yml,避免 ObjectMapper 多实例污染。
publicclassLoginRequest{privateStringaccount;privateStringpassword;privateStringloginType;}{"account":"13800138000","password":"123456","login_type":"PASSWORD"}Jackson 自动映射为:
loginRequest.getLoginType();// PASSWORDpublicclassLoginVO{privateStringaccessToken;privateStringrefreshToken;privateLongexpiresIn;}{"access_token":"xxx","refresh_token":"yyy","expires_in":7200}@JsonProperty("access_token")privateStringaccessToken;问题:
privateStringaccess_token;问题:
@JsonProperty("openid")privateStringopenId;只在:
@JsonNaming(PropertyNamingStrategies.LowerCamelCaseStrategy.class)publicclassThirdPartyCallbackRequest{}启用后:
access_tokenaccessToken后端代码只写驼峰;
API 协议只暴露下划线;
Jackson 全局负责翻译。