mapstruct将列表转换为地图

问题描述 投票:0回答:1

我对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实现的方法?

java spring spring-boot mapstruct
1个回答
2
投票

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)之类的东西引用


0
投票

Map结构不支持列表到地图的隐式转换。您可以创建单独的转换方法或创建自定义映射器。

请在下面的链接中参考实现细节。

https://www.baeldung.com/mapstruct-custom-mapper

© www.soinside.com 2019 - 2024. All rights reserved.