使用MapStruct将嵌套Map<String, Map<String, Object>>结构转换为自定义Java实体类的实现方案咨询
使用MapStruct将嵌套Map<String, Map<String, Object>>结构转换为自定义Java实体类的实现方案咨询
我有一个如下格式的API响应:
{ "apiResponse": { "successRequestList": { "rides": { "bike": null, "cars" :{ "features": {"roof", "Power Steer", "..."}, "variants": {"petrol", "diesel", "hybrid"}, "launched" : [ { "city-name": "", "country": "" } ] } } }, "failedRequestList": {} } }
我想要用MapStruct把cars的值映射到如下的Java对象中:
public class Assets { private String validResponse; private Drive drive; } public class Drive { private List<String> features; private List<String> variants; private List<Availability> availableIn; }
我尝试用MapStruct把cars映射到Drive对象,但一直没找到可行的方法。
我也试过编写自定义默认方法来实现,但遇到了ClassCastException:
java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class Assets$Drive (java.util.LinkedHashMap is in module java.base of loader 'bootstrap'; Assets$Drive is in unnamed module of loader 'app')
有人能建议一下是否可以用MapStruct轻松实现这个映射,还是我应该换用其他库?ChatGPT也没能给出可行的解决方案。
JSON响应被存储在ResponseDTO类中:
public class ResponseDTO { private Map<String, Map<String, Object>> successRequestList; }
我需要实现如下的映射:
public interface RideMapper { @Mapping(target = "drive", expression = "java((Drive) response.getSuccessRequestList()" + ".get(\"rides\").get(\"cars\"))") Assets mapToRulesReferenceContext(ResponseDTO response); }
备注:内容来源于stack exchange,提问作者Gagan
相关产品推荐
相关产品推荐

