Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将嵌套映射转换为bean?_Java - Fatal编程技术网

Java 如何将嵌套映射转换为bean?

Java 如何将嵌套映射转换为bean?,java,Java,当我有bean和映射结构时,如下所示 公共类MyBean1{ 专用字符串a1; 专用字符串b1; 私人名单c1; 公共无效集合a1(字符串a1){ 这1.a1=a1; } 公共空间1(字符串b1){ 这1.b1=b1; } 公共无效集合c1(列表c1){ 这1.c1=c1; } } 公共类MyBean2{ 专用字符串a2; 私有字符串b2; 公共空间2(字符串b2){ 这1.b2=b2; } 公共无效集合a2(字符串a2){ 这1.a2=a2; } } 公共静态void main(字符串[]ar

当我有bean和映射结构时,如下所示

公共类MyBean1{
专用字符串a1;
专用字符串b1;
私人名单c1;
公共无效集合a1(字符串a1){
这1.a1=a1;
}
公共空间1(字符串b1){
这1.b1=b1;
}
公共无效集合c1(列表c1){
这1.c1=c1;
}
}
公共类MyBean2{
专用字符串a2;
私有字符串b2;
公共空间2(字符串b2){
这1.b2=b2;
}
公共无效集合a2(字符串a2){
这1.a2=a2;
}
}
公共静态void main(字符串[]args)引发异常{
Map Map=newhashmap();
地图放置(“a1”、“a1”);
地图放置(“b1”、“b1”);
Map nmap1=新的HashMap();
nmap1.put(“a2”、“a2”);
nmap1.put(“b2”、“b2”);
map.put(“c1”,Collections.singletonList(nmap1));
}
如果我想用字段c1获取bean,类型为
List
,如何转换此映射?

我已经尝试在apache commons BeanUtils中使用
BeanUtils.populate()
,但它将删除类型
MyBean2
,并获取
HashMap


我可以使用java reflect来实现这一点吗?或者是否有任何库可以存档我的请求?

如果类型不是
List
,而是
Map
,该怎么办?或其他通用类型,如
可选



顺便说一句,我不想使用json库或预定义结构库,如MapStruct或Dozer。

您可以使用com.fasterxml.jackson.databind.ObjectMapper,只需在主方法中添加以下内容,就可以获得所需对象的映射,请参见屏幕截图(在调试模式下本地运行)-


试试Jackson(不确定是否可行,但可能会),这将使用json序列化程序转换映射。但我也发现没有好的方法来使用reflect来实现这一点。也许这是目前最好的方式。谢谢
        ObjectMapper mapper = new ObjectMapper();
        final MyBean1 myBean1 = mapper.convertValue(map, MyBean1.class);
        System.out.println(myBean1);