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

Spring Boot如何仅在返回响应时忽略POJO字段且复用同一实体?

解决方案

方案1:使用@JsonProperty(access = Access.WRITE_ONLY)标记id字段

这是最直接的实现方式,WRITE_ONLY属性指定字段仅在**反序列化(接收请求)**时被读取,**序列化(返回响应)**时自动忽略,完全匹配你的需求。

同时要处理前端lname与POJOlastName的字段映射,以及返回时的lName字段名,最终代码如下:

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonProperty.Access;

public class Student {
    // 仅允许反序列化时读取,序列化时忽略
    @JsonProperty(access = Access.WRITE_ONLY)
    private String id;
    
    private String name;
    
    // 接收前端传入的lname,返回响应时输出为lName
    @JsonAlias("lname")
    @JsonProperty("lName")
    private String lastName;

    // 生成标准getter、setter方法
    public String getId() { return id; }
    public void setId(String id) { this.id = id; }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public String getLastName() { return lastName; }
    public void setLastName(String lastName) { this.lastName = lastName; }
}

方案2:@JsonIgnore搭配@JsonProperty(兼容低版本Jackson)

如果你的Jackson版本低于2.6(不支持Access枚举),可以用这个组合实现:

  • 给id的getter添加@JsonIgnore,让序列化时忽略该字段
  • 给id的setter添加@JsonProperty,让反序列化时能通过setter正常赋值
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;

public class Student {
    private String id;
    private String name;
    
    @JsonAlias("lname")
    @JsonProperty("lName")
    private String lastName;

    @JsonIgnore
    public String getId() { return id; }

    @JsonProperty
    public void setId(String id) { this.id = id; }

    // 其他字段的getter、setter正常编写
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public String getLastName() { return lastName; }
    public void setLastName(String lastName) { this.lastName = lastName; }
}

效果验证

  • 接收请求:前端传入的id、name、lname都会正确映射到Student对象的对应字段,id不会出现null的情况
  • 返回响应:序列化后的JSON仅包含name和lName字段,id被自动忽略,完全符合预期格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:01:11