我在一个spring boot项目中编写代码,有很多api使用不同的request param,所以我尝试用mapper将一个request param编写一个泛型函数到一个list对象中,然后将它转换成一个类,如下面的代码所示
public static <D> List<D> convertStringListToObject(String string) {
if (string == null) return null;
try {
return objectMapper.readValue(string, new TypeReference<>() {
});
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
但结果是它只能返回一个object列表,而不是像我期望的那样返回d类列表。有人知道怎么写这个函数吗?
eddited:我是这样调用它的:
filterBlockRequestDto.setPopularFiltersList(ApiUtil.convertStringListToObject(filterBlockRequestDto.getPopularFilters()));
filterblockrequestdto类
package com.levitate.projectbe.dto.filter;
import com.levitate.projectbe.dto.common.PopularFiltersDto;
import com.levitate.projectbe.dto.common.TotalBudgetDto;
import lombok.*;
import java.util.List;
@Getter
@Setter
@Builder
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class FilterBlockRequestDto {
Integer locationId;
Integer projectId;
String totalBudget;
List<TotalBudgetDto> totalBudgetList;
// The string was pass in Request param
String popularFilters;
List<PopularFiltersDto> popularFiltersList;
Integer viewRating;
Integer numberOfBed;
}
2条答案
按热度按时间x6h2sr281#
一种方法是接受类型引用作为参数,以便调用者可以提供目标类和作为参数
TypeReference
是一个子类,泛型类型信息将在运行时可用。h7appiyu2#
您还必须将要反序列化字符串的类型传递给。。
我的方法是这样的:
然后使用以下方法: