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>>() { });
我正在向 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>>() { });