问题描述
当用feign client远程调用时,返回的复杂对象反序列化报错。
错误信息:
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token
复杂对象为:
PageModel{
int pageSize;
int pageNum;
int total;
List data;
}
解决方法
在对应List属性上增加注解配置
PageModel{
int pageSize;
int pageNum;
int total;
@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
List data;
}
调试过程
通过DEBUG,找到几个关键类。
ObjectMapper解析类报错位置:
_readMapAndClose(JsonParser p0, JavaType valueType) {
...
result = deser.deserialize(p, ctxt);
...
}
CollectionDeserializer报错位置:
boolean canWrap = (_unwr