当我使用restemplate.exchange调用RESTAPI时,当结果是一个简单的对象数组时,
...
ResponseEntity result = restTemplate.exchange(new URI(school.getUrl()) + reqMethod, HttpMethod.GET, entity, resultType);
return Arrays.asList((T[]) result.getBody());
...
一切都好。
但是当api返回一个更复杂的对象时,比如pageresult,
class PageResult<T>(var count: Long, var result: List<T>
然后只有pageresult及其字段将被正确地解组,“result”本身作为linkedhashmap返回。
假设这是“按设计工作”,但我希望json完全包含在该对象中,因为SpringBoot在生活的其他方面也会这样做:-)
我头上的结在哪里?
1条答案
按热度按时间bvk5enib1#
听起来像是在向exchange方法发送pagetype::class.java。像m。deinum在其注解pagetype::class.java中声明,不知道result属性中元素的类型,因此反序列化程序不知道类型,并默认为linkedhashmap。
要解决此问题,请创建一个ParameteredTypeReference并将其发送到exchange方法。
请注意,不能仅围绕此调用创建一个通用 Package 器,因为这样会产生相同的结果。如果有必要的话,让 Package 器函数内联具体化类型,有点像这样;