我对mapstruct非常陌生。我正在尝试将List转换为Map,我在网上进行了很多搜索,我有一些解决方案,例如尚未在mapstruct中实现。如果有人能够提供其他解决方案,我将感到非常高兴。我正在寻找的所有转换映射如下:
@Mapping
Map<String, Object> toMap(List<MyObj>)
@Mapping
List<MyObj> toList(Map<String, Object>)
其中MyObj如下:
class MyObj {
String key; //map key
String value; //map value
String field1;
}
在上面,仅使用MyObj类中的键和值字段。我找到了一种解决方案,但以下是将某些对象转换为MAP的方法,但在下面使用了Jackson:
@Mapper
public interface ModelMapper {
ObjectMapper OBJECT_MAPPER = new ObjectMapper();
default HashMap<String, Object> toMap(Object filter) {
TypeFactory typeFactory = OBJECT_MAPPER.getTypeFactory();
return OBJECT_MAPPER.convertValue(filter, typeFactory.constructMapType(Map.class, String.class, Object.class));
}
}
现在是否有任何要使用mapstruct实现的方法?
Map结构没有将所需的List隐式转换为Map。您可以使用以下自定义映射方法:
@Mapper
public interface FooMapper {
default Map<String, Foo> convertFooListToMap(List<Foo> foos) {
// custom logic using streams or however you like.
}
}
[其他选项包括您编写的自定义映射器实现,并使用@Mapper(uses=CustomMapper.class)
之类的东西引用
Map结构不支持列表到地图的隐式转换。您可以创建单独的转换方法或创建自定义映射器。
请在下面的链接中参考实现细节。