mapstruct 将列表转换为地图
mapstruct convert list to map
我是 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 class 中的键和值字段。我找到了一种解决方案,但下面是将一些对象转换为 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 结构没有将所需列表隐式转换为 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)
我是 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 class 中的键和值字段。我找到了一种解决方案,但下面是将一些对象转换为 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 结构没有将所需列表隐式转换为 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)