当前位置: 首页 > article >正文

Jackson 忽略注解 @JsonIgnore 不生效

问题

  • com.fasterxml.jackson.core
    • jackson-databind:2.15.0
    • jackson-annotation:2.15.0
// 设置保留字段
@Transient
@JsonIgnore // 注解不生效
private final transient String path = null;

原因

Jackson 版本 2.15.0 下, transient 关键字和 @JsonIgnore 冲突, 导致忽略失效

解决办法临时解决办法

  • 方法1: 将 @JsonIgnore 注解放在 getter 方法上
  • 方法2: 去掉 transient
  • 方法3: 升级 jackson 到最新版本
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.17.2'

Reference

jackson-databind issue

  • issue #3874: 2.15.0-rc1 regression: transient fields are serialized
  • issue #3909: @JsonIgnore not working in 2.15.0 with transient fields having a public getter method

其他

  • 字段忽略, 有两种方法
  1. @JsonIgnore 注解

直接在希望忽略的字段上添加注解 @JsonIgnore

  1. transient 关键字

除了使用上面的注解之外,也可以使用 jdk 原生提供的关键字 transient 来声明需要忽略的字段, 同时开启设置 (默认的场景下, 字段上修饰有 transient 关键字, 也不会忽略)

transient 是作用在 对象序列化 上的关键字 (如 jdk 自带的序列化到文件)

objectMapper = new ObjectMapper();
// 忽略 transient 关键字的配置 (2选1)
// case1
objectMapper.configure(MapperFeature.PROPAGATE_TRANSIENT_MARKER, true);
// case2
objectMapper.setVisibility(objectMapper.getSerializationConfig()
        .getDefaultVisibilityChecker()
        .withFieldVisibility(JsonAutoDetect.Visibility.ANY)
        .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
        .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE));
  • Jacskon 只会处理 public 修饰的成员 (pub属性 / get / set 方法)
  • 必须有无参构造器
  • 类至少包含一个属性 (SerializationFeature.FAIL_ON_EMPTY_BEANS)
No serializer found for class com.xxxx.TestBean \
and no properties discovered to create BeanSerializer \
(to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)

http://www.kler.cn/a/280090.html

相关文章:

  • 如何从索尼相机/ SD卡恢复已删除的照片/视频
  • 后端面试真题整理
  • CVBS信号在视频应用中的角色与特性
  • AWS 中的信任策略的危险
  • 【中学教资-信息技术】图像/音频/视频文件大小的计算
  • MyBatis查询 ▎修改 ▎删除
  • 深入解析Smarty SSTI 利用
  • 租用服务器都有哪些用途?
  • 数据结构: 树状数组
  • Linux中的常见命令——用户管理命令
  • Excel技能分享:不同sheet间根据值匹配进行赋值
  • 图解计算机网络:一条 HTTP 请求的网络拓扑之旅
  • 同城外卖系统开发方案解析
  • 无线领夹麦克风行业乱象专业揭晓:避免音频失真等潜在危害
  • 论文《Graph Structural Attack by Perturbing Spectral Distance》笔记
  • SpringCloudGateway重写负载均衡策略
  • 4个诀窍教你苹果手机怎么看wifi密码,赶紧学起来吧
  • k8s部署redis一主两从三哨兵(集群内访问)
  • 腾讯地图接入报错vue.runtime.esm.js:4605[Vue warn]: Error in v-on handler: “far <= 0“
  • clickhouse-neighbor 坑爹的排序