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

@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.lryc.cn/news/465403.html

相关文章:

  • SpringBoot整合mybatisPlus实现批量插入并获取ID
  • 实战RAG第一天——llama_index向量索引,查询引擎,搜索知识库问答,全部代码,保姆级教学
  • 大数据治理
  • 云计算作业
  • 复制文件到U盘提示:对于目标文件系统,文件过大
  • SpringBoot+Swagger2.7.0实现汉化(2.8.0不行)
  • c++ 散列表
  • Windows通过netsh控制安全中心防火墙和网络保护策略
  • UML(Unified Modeling Language,统一建模语言)
  • 深⼊理解指针(2)
  • Ubuntu中MySQL远程登录设置
  • typescript 中封装一个 class 来解析接口响应数据
  • [LeetCode] 21. 合并两个有序链表
  • CTFHUB技能树之SQL——MySQL结构
  • Git小知识:合理的分支命名约定
  • Ubuntu如何显示pcl版本
  • wordcloud 字体报错
  • 使用Matplotlib绘制极轴散点图
  • Elasticsearch入门:增删改查详解与实用场景
  • 【AI论文精读6】SELF-RAG(23.10)附录
  • sql-labs靶场第十七关测试报告
  • 面试官:MySQL一次到底插入多少条数据合适啊?
  • WSL2 构建Ubuntu系统-轻量级AI运行环境
  • 什么是凸二次规划问题
  • 解决 Elasticsearch cluster_block_exception 错误的终极指南
  • QT sql驱动错误QMYSQL driver not loaded
  • 数据驱动,漫途能耗管理系统打造高效节能新生态!
  • PH47代码框架软件二次开发极简教程
  • SQL Server-导入和导出excel数据-注意事项
  • Linux系统:配置Apache支持CGI(Ubuntu)