嵌入式 C 语言 IEC 61508 功能安全编码规范详解:从 MISRA 到 SIL 认证的落地差距分析
2026/7/22 0:22:12
结论先行:
前端统一 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 全局负责翻译。