![](/img/trans.png)
[英]class java.util.LinkedHashMap cannot be cast to class java.lang.String (java.util.LinkedHashMap and java.lang.String
[英]class java.util.LinkedHashMap cannot be cast to class [...]
我正在向 WooCommerce API 发出 GET 请求以获取订单,我的想法是从响应中获取一些数据并将其插入本地数据库。 我测试了请求,一切正常。 所以我继续使用 QuickType 能够创建对应于响应的类,所以我有办法将它保存并插入到数据库中。 问题如下,如果我注释“for”语句,没有问题。 但是在使用它获取答案的值并将它们插入数据库的那一刻,出现了这个错误:class java.util.LinkedHashMap cannot be cast to ZA2F2ED4F8EBC2CBB4C21A29DC40AB61D [name class]。 而且:[我的班级]在加载器 org.springframework.boot.devtools.restart.classloader.RestartClassLoader 的未命名模块中。 你能帮我找到解决这个问题的方法吗? 这是代码:
@GetMapping("/ordenes")
public List<WcOrden> getOrdenes() {
List<WcOrden> ordenes = (List<WcOrden>) wc.getAll(EndpointBaseType.ORDERS.getValue(), params);
for (WcOrden orden : ordenes) {
log.debug("This is an order");
}
return ordenes;
}
我假设wc.getAll(...)
是对外部 API 的调用。
当 Jackson 没有足够的关于要反序列化到什么 class 的信息时,它使用LinkedHashMap
。
在您的情况下,它知道它是一个列表,但不是列表中元素的实际类型,如 本文所述。
因此,要解决它,您可以使用 ObjectMapper 的 convertValue:
ObjectMapper mapper = new ObjectMapper(); // or inject it as a dependency
List<WcOrden> pojos = mapper.convertValue(wc.getAll(...), new TypeReference<List<WcOrden>>() { });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.