模型映射器将Map <string,object>映射到类,该类扩展了另一个不适用于列表字段的通用类

时间:2018-08-01 05:06:00

标签: modelmapper

我正在尝试使用模型映射器从Map创建我的自定义配置对象。除了fields属性(来自通用超类)外,所有内容均已正确映射。

我的目标对象是

public class ADParserConfig extends CustomParserConfig<ADParserConfigField> {

private String pattern;

public String getPattern() {
    return pattern;
}

public void setPattern(String pattern) {
    this.pattern = pattern;
}

}

这扩展了通用类CustomParserConfig

public class CustomParserConfig<T extends CustomParserConfigField> {

protected List<T> fields;
protected String timeStampField;

public List<T> getFields() {
    return fields;
}

public void setFields(List<T> fields) {
    this.fields = fields;
}

public String getTimeStampField() {
    return timeStampField;
}

public void setTimeStampField(String timeStampField) {
    this.timeStampField = timeStampField;
}
}

其中CustomParserConfigField为

public class CustomParserConfigField {

protected String name;
protected Integer index;
protected String type;
protected String format;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public Integer getIndex() {
    return index;
}

public void setIndex(Integer index) {
    this.index = index;
}

public String getType() {
    return type;
}

public void setType(String type) {
    this.type = type;
}

public String getFormat() {
    return format;
}

public void setFormat(String format) {
    this.format = format;
}
}

我正在尝试使用以下功能映射地图

ADParserConfig adParserConfig = getConfig(map,ADParserConfig.class);

 public  <T extends CustomParserConfig> T getConfig(Map<String,Object> configObject, Class<T> classType){
    ModelMapper modelMapper = new ModelMapper();

    return modelMapper.map(configObject,classType);

}

fields以外的所有内容均已正确映射到以下地图。

{fields=[{name=timeStamp, type=timestamp, format=dd/mm/yyyy HH:MM:SS a}, {name=logName, type=string}], pattern=(?<timeStamp>\d{2}\/\d{2}\/\d{4}\s\d{2}:\d{2}:\d{2}\s[AMPMampm]{2})?\s(LogName=(?<logName>[\w\s\W]+))?\sSourceName=(?<sourceName>[\w\s\W]+)\sEventCode=(?<eventCode>[0-9]*), timeStampField=timestamp}

请帮助。为什么仅对字段对象发生问题?我需要在映射器配置中指定其他内容吗?

1 个答案:

答案 0 :(得分:0)

它看起来像个错误,并且已由#370

修复。