orika-mapper / orika

Simpler, better and faster Java bean mapping framework
http://orika-mapper.github.io/orika-docs/
Apache License 2.0
1.29k stars 269 forks source link

bean has list<Map> can't do trans completed! #387

Open chengbinTechnology opened 2 years ago

chengbinTechnology commented 2 years ago

public class DataWrapper {

List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();

public DataWrapper(){
    Map<String,Object> map=new HashMap<String,Object>();
    map.put("dafa","ddd");
    map.put("daffa","mmmm");
    list.add(map);
}

public List<Map<String, Object>> getList() {
    return list;
}

public void setList(List<Map<String, Object>> list) {
    this.list = list;
}

}

public class ChengbinDescribe extends PersonSource {

private DataWrapper auths;

public DataWrapper getAuths() {
    return auths;
}

public void setAuths(DataWrapper auths) {
    this.auths = auths;
}

}

public class StudentSource {

private DataWrapper auths;

public DataWrapper getAuths() {
    return auths;
}

public void setAuths(DataWrapper auths) {
    this.auths = auths;
}

}

public static void main(String[] args) throws Exception{ ChengbinDescribe twoSource=new ChengbinDescribe(); InnerBean innerBean=new InnerBean(); DataWrapper wrapper=new DataWrapper(); List<Map<String,Object>> list=new ArrayList<Map<String,Object>>(); Map<String,Object> map=new HashMap<String,Object>(); map.put("chengbin","host"); map.put("cxt","hust"); list.add(map); map=new HashMap<String,Object>(); map.put("keys","kust"); map.put("key2","kbst"); list.add(map); wrapper.setList(list); wrapper.getList().addAll(innerBean.buskMap()); twoSource.setAuths(wrapper); // twoSource.setInnerBean(innerBean); //twoSource.setInnerBean(innerBean); //json Utils can do it StudentSource studentSource2=EntityUtils.toBean(twoSource,StudentSource.class); System.out.println(EntityUtils.toJson(twoSource)); StudentSource studentSource1=OrikaMapperUtils.transBean(twoSource,StudentSource.class); //System.out.println(studentSource1.getUserMap()); System.out.println(studentSource2); System.out.println(studentSource1.getAuths().getList()); System.out.println(EntityUtils.toJson(studentSource1)); }

{"auths":{"list":[{"chengbin":"host","cxt":"hust"},{"key2":"kbst","keys":"kust"},{"dafa":"ddd","daffa":"mmmm"}]}} StudentSource@771a660 [{}, {}, {}] {"auths":{"list":[{},{},{}]}}

jsonutils can't do it,but this is not can do it!

WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by ma.glasnost.orika.converter.builtin.CloneableConverter (file:/D:/DevSourceDir/GradleLocalSource/caches/modules-2/files-2.1/ma.glasnost.orika/orika-core/1.5.4/b4f1019bfeda6d6aa0790a42f2d317151d2d2f4d/orika-core-1.5.4.jar) to method java.lang.Object.clone() WARNING: Please consider reporting this to the maintainers of ma.glasnost.orika.converter.builtin.CloneableConverter WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release

chengbinTechnology commented 2 years ago

the application logging output this message:

Orika_LinkedHashMap_HashMap_Mapper24876062731500$2.mapAToB(HashMap<String, Object>, LinkedHashMap) { Field(empty(boolean), empty(boolean)) : excluding because LinkedHashMap<String, Object>.empty(boolean) is not assignable and cannot be mapped in-place } Orika_LinkedHashMap_HashMap_Mapper24876062731500$2.mapBToA(LinkedHashMap<String, Object>, HashMap) { Field(empty(boolean), empty(boolean)) : excluding because HashMap<String, Object>.empty(boolean) is not assignable and cannot be mapped in-place }

chengbinTechnology commented 2 years ago

jsonUtilsResult: {"auths":{"list":[{"name":"innerBean","innerMap":[{"keys":"asdfaf","must":"bbbb"}],"mostMap":[{"list":[{"whk":"22"}]}]},{"name":"innerBean","innerMap":[{"keys":"asdfaf","must":"bbbb"}],"mostMap":[{"list":[{"whk":"22"}]}]}]}} [InnerBean@18df8434, InnerBean@65c7a252] orikaUtilsResult: {"auths":{"list":[{"name":"innerBean","innerMap":[{}],"mostMap":[{"list":[{}]}]},{"name":"innerBean","innerMap":[{}],"mostMap":[{"list":[{}]}]}]}}