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

时间:2024-10-22 08:25:55

最近看到有个同事,在代码里面加了@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 结构的情况下,这个注解非常有用。

相关文章