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)