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

IntelliJ中Lombok构建POJO时@JsonProperty注解不生效问题求助

Lombok @Builder构建对象时@JsonProperty注解不生效问题排查

修复方案按优先级逐一验证:

  • 补充Lombok全局配置,开启注解拷贝
    默认配置下Lombok生成的Builder内部类不会自动复制字段上的Jackson注解,部分Jackson版本序列化时会读取Builder类的属性元数据,读不到@JsonProperty配置就会使用原生字段名。
    在项目根目录(与pom.xml/build.gradle同级)新建lombok.config文件,写入以下配置:
    lombok.copyableAnnotations += com.fasterxml.jackson.annotation.JsonProperty
    config.stopBubbling = true
    
    配置添加完成后执行Rebuild Project,触发生成代码更新。
  • 修正带默认值的final字段写法
    你代码中grantType字段用final修饰且直接赋值了初始值,@Builder默认不会为这类字段生成构建逻辑,也会导致注解关联失效。如果需要该字段支持Builder赋值,去掉final修饰符,同时添加@Builder.Default注解显式声明默认值:
    @JsonProperty("grant_type")
    @Builder.Default
    private String grantType = "xyz";
    
  • 检查IntelliJ注解处理器配置
    确认IDE的注解处理功能开启:
    1. 打开Settings > Build, Execution, Deployment > Compiler > Annotation Processors
    2. 勾选Enable annotation processing选项
    3. 确认Lombok插件已安装启用,重启IDE后重新构建项目
  • 验证序列化配置无覆盖
    检查项目中ObjectMapper的全局配置,确认没有开启强制命名策略(比如PropertyNamingStrategies.LOWER_CAMEL_CASE)、也没有开启MapperFeature.USE_STD_BEAN_NAMING这类会覆盖字段注解的配置。可以用以下最小用例验证修复效果:
    public class Test {
        public static void main(String[] args) throws JsonProcessingException {
            pojo testObj = pojo.builder().clientId("test_client").build();
            // 正确序列化结果:{"grant_type":"xyz","client_id":"test_client"}
            System.out.println(new ObjectMapper().writeValueAsString(testObj));
        }
    }
    

注:当前类名pojo为小写,不符合Java大驼峰类名命名规范,虽然不影响功能运行,建议调整为大驼峰格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:54:28