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在反序列化过程中被跳过。
相关推荐
雾江流1 天前
myDV 1.1.7 | 纯净开源,抖音第三方TV版,适配遥控器
软件工程
雾江流1 天前
Readest0.10.1 | 纯净无广小说阅读,免费开源,内置AI朗读引擎,支持多种电子书格式
软件工程
数字时代全景窗2 天前
第二届商业航天产业发展大会(深圳)随感
软件工程
搜佛说2 天前
下一代跨语言原生操作系统商业计划书
物联网·软件工程
卡尔AI工坊2 天前
copilot更新:本地、背景、云;Claude、Codex
人工智能·经验分享·chatgpt·软件工程·copilot·ai编程
Lab_AI2 天前
研发项目管理iLabPower PM与电子实验记录本ELN 平台协同,助力医药研发项目高效管理,提升研发实力
软件工程·研发项目管理·电子实验记录本
XuanTao772 天前
【分享】✍️手写生成器|高级版|轻松生成自然逼真手写字体
数码相机·计算机网络·网络安全·智能手机·软件工程
19岁开始学习2 天前
软考高级之软件工程
软件工程
超级学长2 天前
基于深度学习的软件工程:进展、挑战与机遇
人工智能·深度学习·软件工程
雾江流2 天前
LSPosed 2.0.0 | 强大的安卓Root框架,支持XP模块
android·软件工程