java - Java 从 JSON 转换为对象列表
问题描述
我正在使用 Java 7。我还使用com.fasterxml.jackson.databind.objectmapper
将 json 转换为 Java 对象。
当我最初将 Java 对象转换为 JSON 时,我执行以下操作:
List<QuoteDTO> selectedQuoteDTOs = ...
String jsonSelectedQuoteDTOs = mapper.writeValueAsString(selectedQuoteDTOs);
当我将 JSON 转换回 JAVA 对象时,我执行以下操作:
List<QuoteDTO> selectedQuoteDTOs = mapper.readValue(jsonSelectedQuoteDTOs, List.class);
但是selectedQuoteDTOs
are 不是 type 的QuoteDTO
,而是 of rather of 的LinkedHashMap
。
导致我收到以下错误:
java.lang.ClassCastException:java.util.LinkedHashMap 无法转换为 com.abc.model.QuoteDTO
当我这样做时:
for (QuoteDTO selectedQuoteDTO : selectedQuoteDTOs) {
问题
将 JSON 转换为 JAVA 时,如何将对象转换为 aList<QuoteDTO>
而不是 a List<LinkedHashMap>
?
LinkedHashMap
键是QuoteDTO
成员变量的名称。
解决方案
尝试这个。这应该做的工作
ObjectMapper mapper = new ObjectMapper();
List<QuoteDTO> selectedQuoteDTOs = mapper.readValue(jsonSelectedQuoteDTOs, new TypeReference<List<QuoteDTO>>(){});
推荐阅读
- c - 我在 XV6 中杀死进程“A”,“A”的子进程会发生什么
- unity3d - 将统一制作的树导出到另一个项目
- r - 使用 for 循环进行数据清理
- java - 如何查找一个进程是否在 Windows/Linux 上运行
- flutter - 使用 OneSignal 时删除的用户出错
- machine-learning - 减少训练损失,稳定验证损失——模型是否过拟合?
- python - 如何测量崩溃的 Python 程序的时间?
- javascript - RxJS:使用更多/更少的 Observable 更新“combineLatest”以进行组合
- microservices - 事件溯源,两个服务在处理同一事件时发生冲突
- windows - Flutter Desktop - flutter-desktop-embedding 如何将文件保存到硬盘