在开发过程中,微服务间调用通过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~~