Java 使用Dozer将字符串数组映射到POJO中
我试图使用Dozer将列表转换为列表,但无法使用mapper将索引值映射到属性字段 如何将字符串[]的成员映射到各个对象字段,而每个索引都指向特定字段?e、 g.[0]->名称和[1]->角色 和用户类Java 使用Dozer将字符串数组映射到POJO中,java,pojo,dozer,Java,Pojo,Dozer,我试图使用Dozer将列表转换为列表,但无法使用mapper将索引值映射到属性字段 如何将字符串[]的成员映射到各个对象字段,而每个索引都指向特定字段?e、 g.[0]->名称和[1]->角色 和用户类 它在以下配置下运行良好 DozerBeanMapper mapper = new DozerBeanMapper(); BeanMappingBuilder builder = new BeanMappingBuilder() { @Override protected void
它在以下配置下运行良好
DozerBeanMapper mapper = new DozerBeanMapper();
BeanMappingBuilder builder = new BeanMappingBuilder() {
@Override
protected void configure() {
mapping(String[].class, User.class)
.fields(this_(), "name", FieldsMappingOptions.customConverterId("arrToName"))
.fields(this_(), "role", FieldsMappingOptions.customConverterId("arrToRole"));
}
};
final Map<String, CustomConverter> customConverterMap = new HashMap<>();
customConverterMap.put("arrToName", new ArrToNameConverter());
customConverterMap.put("arrToRole", new ArrToRoleConverter());
mapper.setCustomConvertersWithId(customConverterMap);
mapper.addMapping(builder);
和arrtorolaconverter
它在以下配置下运行良好
DozerBeanMapper mapper = new DozerBeanMapper();
BeanMappingBuilder builder = new BeanMappingBuilder() {
@Override
protected void configure() {
mapping(String[].class, User.class)
.fields(this_(), "name", FieldsMappingOptions.customConverterId("arrToName"))
.fields(this_(), "role", FieldsMappingOptions.customConverterId("arrToRole"));
}
};
final Map<String, CustomConverter> customConverterMap = new HashMap<>();
customConverterMap.put("arrToName", new ArrToNameConverter());
customConverterMap.put("arrToRole", new ArrToRoleConverter());
mapper.setCustomConvertersWithId(customConverterMap);
mapper.addMapping(builder);
和arrtorolaconverter
答案非常适合你的问题!你能把你的反馈给我吗?谢谢答案非常适合你的问题!你能把你的反馈给我吗?谢谢
class User {
String name;
String role;
// getter & setter
}
DozerBeanMapper mapper = new DozerBeanMapper();
BeanMappingBuilder builder = new BeanMappingBuilder() {
@Override
protected void configure() {
mapping(String[].class, User.class)
.fields(this_(), "name", FieldsMappingOptions.customConverterId("arrToName"))
.fields(this_(), "role", FieldsMappingOptions.customConverterId("arrToRole"));
}
};
final Map<String, CustomConverter> customConverterMap = new HashMap<>();
customConverterMap.put("arrToName", new ArrToNameConverter());
customConverterMap.put("arrToRole", new ArrToRoleConverter());
mapper.setCustomConvertersWithId(customConverterMap);
mapper.addMapping(builder);
public class ArrToNameConverter extends DozerConverter<String[], String> {
public ArrToNameConverter() {
super(String[].class, String.class);
}
@Override
public String convertTo(String[] strings, String user) {
return strings[0];
}
@Override
public String[] convertFrom(String user, String[] strings) {
return new String[0];
}
}
public class ArrToRoleConverter extends DozerConverter<String[], String> {
public ArrToRoleConverter() {
super(String[].class, String.class);
}
@Override
public String convertTo(String[] strings, String user) {
return strings[1];
}
@Override
public String[] convertFrom(String user, String[] strings) {
return new String[0];
}
}
[User(name=Jill, role=SDE), User(name=Jack, role=PM)]