我正在向 WooCommerce API 發出 GET 請求以獲取訂單,我的想法是從回應中獲取一些資料并將其插入到本地資料庫中。我測驗了請求,一切正常。所以我繼續使用 QuickType 來創建回應對應的類,所以我有一種方法可以保存它并將其插入到資料庫中。問題如下,如果我注釋“for”陳述句,就沒有問題。但是在使用它獲取答案的值并將它們插入資料庫的那一刻,出現了這個錯誤:class java.util.LinkedHashMap cannot be cast to class [name of my 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;
}
uj5u.com熱心網友回復:
我假設wc.getAll(...)是對外部 API 的呼叫。
當 Jackson 沒有關于要反序列化為哪個類的足夠資訊時,它使用LinkedHashMap.
在您的情況下,它知道它是一個串列,但不知道串列中元素的實際型別,如本文所述。
因此,要解決它,您可以使用 ObjectMapper 的 convertValue:
ObjectMapper mapper = new ObjectMapper(); // or inject it as a dependency
List<WcOrden> pojos = mapper.convertValue(wc.getAll(...), new TypeReference<List<WcOrden>>() { });
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/378272.html
