我正在开发一个spring-boot应用程序,在该应用程序中我得到了可分页的响应,然后我想使用该可分页响应数组将其解析为一些DTO的列表。
这是我的功能:
public Object fetchSkuGroupsByIdAndWarehouseId(Integer warehouseId, Integer pageNumber, Integer pageSize,
Long groupId) throws IOException, NoSuchFieldException, IllegalAccessException {
ResponseEntity<FeignClientResponse> responseEntity = locationInventoryClient.fetchGroupsByIdAndWarehouseId(warehouseId,pageNumber,pageSize,groupId);
PageableResponse response;
try {
response= objectMapper.readValue(objectMapper.writeValueAsString(
responseEntity.getBody().getData()), PageableResponse.class);
} catch (JsonProcessingException e){
log.error("JsonProcessingException in method fetchSkuGroupsByIdIn");
throw new InvalidMovementRequest("JsonProcessingException in method fetchSkuGroupsByIdIn");
}
log.info(response.getData().toString());
List<Object> list= (List<Object>) response.getData();
//have to convert here to List<SkuGroupDTO>.
return "hey";
}
我也正确地获得了列表列表,但无法将其解析为现有的DTO,我尝试了映射和流式传输,但没有成功。
有什么办法我能做到吗?
您可以创建一个映射器,在YourDTOMapper类中将数据转换为DTO,如下所示:
public static YourDTO mapObjectTo(Object entity) {
return YourDTO.builder()
.id(entity.getId())
.name(entity.getName())
.build();
}
(用您的属性替换id和名称(,而不是像这样使用:
List<YourDTO> yourDTO = response.getData().stream().map(YourDTOMapper::mapObjectTo)
.collect(Collectors.toList());