class java.util.LinkedHashMap 无法转换为 class [...]

class java.util.LinkedHashMap cannot be cast to class [...]

我正在向 WooCommerce API 发出 GET 请求以获取订单,我的想法是从响应中获取一些数据并将其插入本地数据库。我测试了请求,一切正常。所以我继续使用 QuickType 来创建对应于响应的 classes,所以我有办法保存它并将其插入到数据库中。问题如下,如果我注释掉“for”语句,就没有问题了。但是在使用它获取answer的值并插入数据库的瞬间,出现了这个错误: class java.util.LinkedHashMap 无法转换为 class [我的 class] 的名称。 并且: [我的 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.

在您的例子中,它知道它是一个列表,但不知道列表中元素的实际类型,如 article 中所述。

所以,要解决这个问题,可以使用ObjectMapper的convertValue:

ObjectMapper mapper = new ObjectMapper(); // or inject it as a dependency
List<WcOrden> pojos = mapper.convertValue(wc.getAll(...), new TypeReference<List<WcOrden>>() { });