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

如何通过ObjectMapper序列化带私有Getter的私有字段?

解决私有字段(私有Getter)的Jackson序列化问题

给你几个实用的解决办法:

办法一:给字段加@JsonProperty注解

直接在私有字段上标注@JsonProperty,告诉Jackson要序列化这个字段,同时保留私有Getter供内部使用,外部依然调用不了getField()方法。

修改后的代码:

@Data
public class TestClass {
    @JsonProperty
    @Getter(AccessLevel.PRIVATE)
    private String field;
}

办法二:全局配置ObjectMapper允许访问私有字段

如果不想修改实体类,也可以给ObjectMapper做全局配置,让它能直接访问类的私有成员。

代码示例:

ObjectMapper objectMapper = new ObjectMapper();
// 允许Jackson访问所有字段,不管访问修饰符
objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);

这个配置会影响所有被该ObjectMapper处理的类,适合需要统一处理多个类的场景。

办法三:类级别加@JsonAutoDetect注解

在TestClass上添加@JsonAutoDetect,指定字段可见性为ANY,这样Jackson就能访问类里的所有私有字段,同样不影响私有Getter的访问限制。

代码示例:

@Data
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
public class TestClass {
    @Getter(AccessLevel.PRIVATE)
    private String field;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:15:33