![](/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.