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

Jackson反序列化API响应时eMail等次首字母大写字段值为null问题

问题原因

这个问题是Jackson默认的Bean命名匹配规则和Java Bean标准规范在「首字母小写、第二个字母大写」格式的字段场景下不兼容导致的:

  • Lombok的@Data注解会遵循Java Bean规范生成这类字段的getter/setter,比如字段eMail生成的是geteMail()、seteMail()
  • Jackson默认的命名解析逻辑没有遵循该规范,会将这类字段对应的预期JSON键名识别为EMail,而API返回的JSON键名是eMail,二者无法匹配,最终字段赋值为null
  • 你直接用Object接收时本质是把JSON解析为了Map结构,直接按字符串key取值,所以不会有匹配问题

解决方法

方法1:使用@JsonProperty注解(推荐,兼容性最强)

直接在对应字段上显式指定要映射的JSON键名即可,无需修改全局配置:

@JsonProperty("eMail")
private String eMail;
@JsonProperty("iKindName")
private String iKindName;
// 其余同格式字段按此规则添加注解即可

方法2:全局开启Jackson标准Bean命名规则

如果这类字段数量较多,不想逐个加注解,可以修改Jackson的全局配置,启用标准Java Bean命名匹配:

  • 单独使用Jackson时配置:
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(com.fasterxml.jackson.databind.MapperFeature.USE_STD_BEAN_NAMING);
  • Spring Boot项目可以直接在配置文件中添加配置全局生效:
spring:
  jackson:
    mapper:
      use-std-bean-naming: true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:27:03