Bean精细化控制属性序列化反序列化

使用 @JsonPropertyaccess属性

如果您希望实现更精细的控制,比如"允许接收前端数据,但不返回给前端",可以使用 @JsonPropertyaccess属性。这是最优雅和专业的解决方案

java 复制代码
import com.fasterxml.jackson.annotation.JsonProperty; 
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY) 
private String deptId;
  • WRITE_ONLY:表示该字段仅在​反序列化​ (写入对象,即接收前端数据)时有效,在​序列化​ (读出对象,即返回给前端)时会被忽略
分别在 Getter 和 Setter 方法上使用注解​

如果您的业务逻辑非常特殊,还可以选择将注解分别加在方法上,实现更精确的控制

java 复制代码
private String deptId; // 序列化时忽略(不返回给前端)
@JsonIgnore 
public String getDeptId() 
{ 
    return deptId; 
} 
// 反序列化时有效(接收前端数据) 
@JsonProperty 
public void setDeptId(String deptId) 
{ 
    this.deptId = deptId; 
}

问题的核心在于 @JsonIgnore@JsonProperty这两个注解在同一个字段上发生了冲突。

  • @JsonIgnore的作用​ :这个注解告诉 Jackson 库(Spring Boot 默认的 JSON 处理器)在​序列化​ (对象转为 JSON)和​反序列化​ (JSON 转为对象)时都完全忽略这个字段
    。这意味着,即使前端传了 deptId,Jackson 也不会将其值设置到对象的 deptId属性上
  • • ​​注解冲突​ ​:当 @JsonIgnore存在时,它基本上会覆盖其他映射注解的效果。因此,尽管您也使用了 @JsonProperty,但 @JsonIgnore的"完全忽略"指令优先级更高,导致 deptId在反序列化过程中被跳过。
相关推荐
雾江流5 小时前
小米堆叠桌面6.01.05.1991 | 提前享受丝滑堆叠桌面,仅限小米手机
智能手机·软件工程
爱思德学术14 小时前
中国计算机学会(CCF)推荐学术会议-C(软件工程/系统软件/程序设计语言):SPIN 2026
软件工程·软件开发
赫尔·普莱蒂科萨·帕塔18 小时前
智能体工程
人工智能·机器人·软件工程·agi
雾江流1 天前
BiliPai 5.0.5 | B站开源第三方应用,纯净无广流畅
软件工程
JMchen1231 天前
AI编程与软件工程的学科融合:构建新一代智能驱动开发方法学
驱动开发·python·软件工程·ai编程
muddjsv2 天前
软件工程:职业全景与前景深度解析
软件工程
明洞日记2 天前
【图解软考八股034】深入解析 UML:识别标准建模图示
c++·软件工程·软考·uml·面向对象·架构设计
muddjsv2 天前
软件工程编程语言学习:从入门到工程化的路线与建议
软件工程
宇钶宇夕3 天前
CoDeSys入门实战一起学习(二十八):(ST)三台电机顺起逆停程序详解
运维·学习·自动化·软件工程
学嵌入式的小杨同学3 天前
【Linux 封神之路】进程进阶实战:fork/vfork/exec 函数族 + 作业实现(含僵尸进程解决方案)
linux·开发语言·vscode·嵌入式硬件·vim·软件工程·ux