mapstruct конвертировать список в карту - PullRequest
0 голосов
/ 08 ноября 2019

Я очень новичок в 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, но с использованием Джексона ниже:

@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?

1 Ответ

2 голосов
/ 08 ноября 2019

Структура карты не имеет явного преобразования для желаемого списка в карту. Вы можете использовать пользовательский метод отображения следующим образом:

@Mapper
public interface FooMapper {


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

Другие параметры включают пользовательские реализации картографа, которые вы пишете и ссылаетесь на что-то вроде @Mapper(uses=CustomMapper.class)

...