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在反序列化过程中被跳过。
相关推荐
粟悟饭&龟波功7 小时前
【一】软件工程核心概念层级地图与项目落地全流程
系统架构·软件工程
叫我Paul就好9 小时前
RAG 入门到精通 - 生成的优化
人工智能·软件工程·rag
郝学胜-神的一滴1 天前
Qt 高级编程 037:QSS按钮样式封神指南
开发语言·c++·qt·软件工程·用户界面
梁辰兴1 天前
软件工程:需求规格说明书
软件工程·规格说明书·梁辰兴·定义作用·内容结构·编写原则·编写方法
rolt2 天前
PlantUML+EA描述《分析模式》第6章存货和会计(8)
软件工程·架构师·uml
加密狗复制模拟3 天前
使用x64dbg进行超级狗super dog 加密狗逆向分析复制 超级狗克隆备份
安全·软件工程·个人开发·同态加密
超级码力6663 天前
【软件工程】【软件生命周期】软件生命周期8阶段
软件工程·软件构建·软件需求
梁辰兴3 天前
软件工程:系统动态分析
软件工程·基本概念·petri网·应用要点·状态转换图·系统动态分析·状态转换表
梁辰兴5 天前
软件工程:结构化分析方法
软件工程·数据流图·数据字典·er图·基本概念·结构化分析方法·状态转换图
春风送暖8885 天前
专为汽车电子决策层打造,全星APQP系统以AI驱动风险前置,降本增效,构筑研发质量核心堡垒
软件工程