在开发过程中,微服务间调用通过jackon做反序列化的时候,如果接收的对象和接收到的报文结构在字段上不一样,就会抛出以下异常

Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "companyKeyList" (class com.xxx.SysIntentionCapabilityVO), not marked as ignorable (13 known properties: "isInstruct", "templateName", "publishType", "intention", "isInstructName", "intentionDescription", "capabilityType", "templateId", "id", "capabilityTypeName", "ifCleanSessionId", "supportType", "isAsync"])
 at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 143] (through reference chain: com.xxx.common.pojo.vo.Result["result"]->com.xxx.SysIntentionCapabilityVO["companyKeyList"])
	at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
	at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1138)

从而导致反序列化失败,我们可以通过一个全局配置来忽略陌生(多余)字段,配置如下:

spring:
  jackson:
    deserialization:
      fail-on-unknown-properties: false

加载application.yaml配置文件里即可

over~~

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐