簡體   English   中英

class java.util.LinkedHashMap 不能轉換為 class [...]

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM