gpt4 book ai didi

java - mapstruct 将列表转换为映射

转载 作者:行者123 更新时间:2023-12-02 01:15:11 25 4
gpt4 key购买 nike

我是映射结构的新手。我正在尝试将 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 结构没有将您所需的列表隐式转换为映射。您可以使用自定义映射方法,如下所示:

@Mapper
public interface FooMapper {


default Map<String, Foo> convertFooListToMap(List<Foo> foos) {
// custom logic using streams or however you like.
}
}

其他选项包括您编写并引用的自定义映射器实现,例如 @Mapper(uses=CustomMapper.class)

关于java - mapstruct 将列表转换为映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58761076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com