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

@JsonIgnoreProperties做接口对接时使用带来的好处

最近看到有个同事,在代码里面加了@JsonIgnoreProperties这个注解,以前还真没有经常去用过,接口对接尤其是跟金蝶、用友等第三方,这个注解在接收数据是非常好用的;接下来带大家一起了解下具体的特性和使用方式

@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class DataEntity extends BaseEntity {
    private String number;
    private boolean billstatus;
    private long id;

    private String billid;
    private String billno;
    public KingdeeCallDataEntity() {
    }
}

@JsonIgnoreProperties(ignoreUnknown = true) 是 Jackson 库中的一个注解,用于处理 JSON 反序列化过程中遇到的未知属性。以下是使用这个注解的主要好处:
**

忽略未知属性:

**
当 JSON 数据中包含类中没有定义的属性时,Jackson 默认会抛出 UnrecognizedPropertyException 异常。使用 @JsonIgnoreProperties(ignoreUnknown = true) 注解后,这些未知属性将被忽略,不会导致反序列化失败。
示例:

     {
       "number": "12345",
       "billstatus": true,
       "id": 1,
       "billid": "BIL123",
       "billno": "BN123",
       "unknownField": "value"
     }
     

如果 KingdeeCallDataEntity 类中没有 unknownField 属性,使用 @JsonIgnoreProperties(ignoreUnknown = true) 后,unknownField 将被忽略,不会影响反序列化过程。

提高容错性:

在实际应用中,API 接口可能会发生变化,新的字段可能会被添加到 JSON 响应中。使用 @JsonIgnoreProperties(ignoreUnknown = true) 可以使代码更加健壮,减少因 API 变化而导致的反序列化失败。
示例:
假设 API 版本更新后,新增了一个字段 newField,但客户端代码尚未更新。使用 @JsonIgnoreProperties(ignoreUnknown = true) 后,客户端代码仍然可以正常运行,不会因为 newField 而抛出异常。

简化代码:

不需要为每个未知属性编写额外的处理逻辑,减少了代码复杂性和维护成本。
示例:
没有使用 @JsonIgnoreProperties(ignoreUnknown = true) 时,可能需要为每个未知属性编写处理逻辑,例如:

     public void setUnknownField(String unknownField) {
         // 处理未知字段
     }
     

使用 @JsonIgnoreProperties(ignoreUnknown = true) 后,这些处理逻辑可以省略。

4. 提高开发效率:

在开发和测试阶段,可以更快地迭代和调试,因为不需要担心未知属性导致的异常。 示例:
开发人员可以在不完全了解所有字段的情况下快速测试和调试代码,而不会因为未知字段导致反序列化失败。

总结

使用 @JsonIgnoreProperties(ignoreUnknown = true) 注解可以提高代码的健壮性和容错性,简化代码结构,提高开发效率。特别是在处理外部 API 或者不确定 JSON 结构的情况下,这个注解非常有用。


http://www.kler.cn/news/359038.html

相关文章:

  • 数据中心母线槽测温监控装置的优势和如何选型
  • AJAX——AJAX 取消请求
  • Linux:线程
  • 详解Oracle审计(二)
  • 什么是SCRM?为什么企业要做SCRM?
  • 5种边界填充
  • 代码随想录第一天|704.二分查找 27.移除元素
  • 【论文精读】把一切转成mesh!MeshAnything和MeshAnythingV2论文解析
  • 使用centos8在docker环境下编译ceph reef并使用s3cmd与awscli测试
  • 【某农业大学计算机网络实验报告】实验五 TCP 运输连接管理
  • RFC2616 超文本传输协议 HTTP/1.1
  • 修改pq_default.ini禁用降噪,解决S905X3电视盒硬解视频画质模糊、严重涂抹得像油画、水彩画的问题
  • 冲击美团!已成功 OC
  • 重磅!望繁信科技与德勤中国签署战略合作协议
  • OneThink ThinkCMS think.cms
  • 如何基于 Python 快速搭建 QQ 开放平台 QQ 群官方机器人详细教程(更新中)
  • C语言[数组作函数参数]
  • 论文《Text2SQL is Not Enough: Unifying AI and Databases with TAG》
  • Java AI赋能MJ绘画系统开启创意绘图新纪元
  • Spring AI Alibaba 接入国产大模型通义千问