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

使用Lombok @Value注解时Spring返回JSON字段变为小写的问题排查

Spring + Lombok @Value 实体类JSON序列化字段全小写问题排查与解决

这个问题我碰到过好几次,核心原因是Lombok的@Value生成的不可变类,和Jackson的序列化规则之间的小冲突,下面给你拆解原因和解决方案:

问题根源

@Value注解会生成不可变类:字段是private final,同时生成的getter方法不带get前缀(比如字段xAxis对应的getter是xAxis(),而非传统JavaBean的getXAxis())。Jackson在序列化时,如果没有明确的字段映射配置,可能会因为默认命名策略或者版本兼容问题,把驼峰格式的字段名错误转为全小写。

解决方案(按推荐优先级排序)

1. 给字段添加@JsonProperty明确指定JSON字段名

这是最直接、最稳妥的方式,强制Jackson按照你期望的名称序列化,不受任何全局配置影响:

import lombok.Value;
import com.fasterxml.jackson.annotation.JsonProperty;

@Value
public class Movement {
    @JsonProperty("xAxis")
    int xAxis;
    @JsonProperty("yAxis")
    int yAxis;
}

2. 检查并重置Jackson的命名策略

如果你的项目全局修改过Jackson的命名策略(比如不小心改成了全小写),可以在Spring Boot配置文件里重置为默认的驼峰策略:

application.properties:

spring.jackson.property-naming-strategy=LOWER_CAMEL_CASE

application.yml:

spring:
  jackson:
    property-naming-strategy: LOWER_CAMEL_CASE

LOWER_CAMEL_CASE是Jackson默认的命名策略,会严格保留字段的驼峰格式。

3. 升级Lombok和Jackson版本

如果是老版本的Lombok(比如1.18.20之前)或者Jackson(2.12之前),可能存在序列化规则的兼容问题,升级到最新稳定版就能解决。比如Lombok用1.18.30+,Jackson用2.15+。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 20:47:47