[英]How to map a bean into a java.util.Map using MapStruct?
我想使用MapStruct將bean類的字段映射到類似字典的類中。 我的源類是標准Bean(簡化示例):
public class Bean {
private String a;
private String b;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
}
現在,我想將這些字段映射到類似Map的容器中:
public class Dict {
public enum Tag {
A,
B
}
private Map<Tag, String> dict = new HashMap<>();
public String getEntry(Tag tag) {
return dict.get(tag);
}
public void setEntry(Tag tag, String s) {
dict.put(tag, s);
}
}
換句話說,我希望MapStruct生成類似於以下內容的內容:
target.setEntry(Dict.Tag.A, source.getA());
target.setEntry(Dict.Tag.B, source.getB());
我在MapStruct 文檔中找不到任何類似的內容 。 映射源(嵌套源,表達式)有很大的靈活性,但是對於目標,我只能看到target = "propertyname"
表示法,沒有太多靈活性。
映射到java.util.Map
的最佳解決方案是什么?
MapStruct當前不支持這種映射。 我們之前曾考慮過它,但尚未實施它。 您能在我們的問題跟蹤器中打開票證嗎?
您可以在MapStruct映射器中使用Jackson對象映射器將對象轉換為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));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.