数据库中存进去的是json类型的数据,也对应java实体类的集合,但是取出来的时候为什么会变成linkedhashmap的集合了,导致要遍历集合的时候就报类型转化异常
时间: 2024-02-23 09:00:18 浏览: 68
Java常用的强转类型,基本数据类型转换,JSONObject强转Map,JSONArray强转List(附源码)
如果你存储的是 JSON 类型的数据,那么在查询时得到的结果可能是一个 Map 类型的对象,其中键是 JSON 对象中的属性名,值是属性值。这就是为什么你会得到一个 LinkedHashMap 类型的集合。
为了解决这个问题,你需要将查询结果中的 LinkedHashMap 转换为你的 Java 实体类。你可以使用 Jackson 库中的 ObjectMapper 类,将 LinkedHashMap 转换为 Java 实体类的集合。具体的操作如下:
1. 在你的实体类上添加注解,使用 @JsonIgnoreProperties(ignoreUnknown = true) 来忽略未知属性。
2. 使用 ObjectMapper 的 readValue() 方法将 LinkedHashMap 转换为 Java 实体类集合。例如:
```java
ObjectMapper mapper = new ObjectMapper();
List<CalendarItemVO> itemList = mapper.readValue(jsonStr, new TypeReference<List<CalendarItemVO>>(){});
```
其中,jsonStr 是从数据库中查询出来的 JSON 字符串,CalendarItemVO 是你的 Java 实体类,TypeReference 用于指定集合类型。
这样,你就可以将 LinkedHashMap 转换为你的 Java 实体类的集合了,避免了类型转换异常。
阅读全文