【发布时间】:2019-11-12 07:42:31
【问题描述】:
有人在映射时遇到List<Map<String, String>> 类型的字段同样的问题吗?我没有例外,但我需要为我的映射器配置什么吗?
情况是我有这个带有这个字段的对象
List<Map<String, String>> aField
aField 字段的内容是:
[
{
"key1" : "val1",
"key2": "val2"
}
]
当对象映射到另一个对象时,该字段的内容丢失给新映射的对象,当我尝试打印时,列表的大小仍然为1但映射的内容为空(下):
[
{}
]
如果有任何帮助,我将不胜感激。谢谢。
代码如下:
这是要映射的类:
public class SampleClass {
private List<Map<String, String>> aField = new ArrayList<>();
private String bField;
public List<Map<String, String>> getaField() {
return aField;
}
public void setaField(List<Map<String, String>> aField) {
this.aField = aField;
}
public String getbField() {
return bField;
}
public void setbField(String bField) {
this.bField = bField;
}
}
然后我有一个映射器(我也在使用 spring 框架):
@Component
public class TransactionMapper extends ConfigurableMapper {
}
控制器上的某处(用于测试目的):
@Autowired
TransactionMapper mapper;
System.out.println("---------------- SAMPLE CLASS ------------- ");
SampleClass s1 = new SampleClass();
List<Map<String, String>> aField = Lists.newArrayList();
Map<String, String> map = new HashMap<>();
map.put("key1", "val1");
map.put("key2", "val2");
aField.add(map);
s1.setaField(aField);
s1.setbField("Sample text");
System.out.println("****** s1 contents ******");
System.out.println("--- s1 aField: " + ", list size: " + s1.getaField().size());
s1.getaField().get(0).forEach((k, v) -> System.out.println((k + ":" + v)));
System.out.println("--- s1 bField content: " + s1.getbField());
System.out.println("****** end of s1 contents ******");
SampleClass s2 = new SampleClass();
mapper.map(s1, s2);
System.out.println("****** s2 contents ******");
System.out.println("--- s2 aField: " + ", list size: " + s2.getaField().size());
s2.getaField().get(0).forEach((k, v) -> System.out.println((k + ":" + v)));
System.out.println("--- s2 bField content: " + s2.getbField());
System.out.println("****** end of s2 contents ******");
System.out.println("---------------- SAMPLE CLASS ------------- ");
输出:
****** s1 contents ******
--- s1 aField: , list size: 1
key1:val1
key2:val2
--- s1 bField content: Sample text
****** end of s1 contents ******
****** s2 contents ******
--- s2 aField: , list size: 1
--- s2 bField content: Sample text
****** end of s2 contents ******
---------------- SAMPLE CLASS -------------
如您所见,s2的aField没有打印内容。
【问题讨论】:
-
你能分享你的代码吗?
-
嗨,我用代码编辑了我的帖子