繁体   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