首页 > 解决方案 > 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);

但是selectedQuoteDTOsare 不是 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成员变量的名称。

标签: javadata-bindingfasterxml

解决方案


尝试这个。这应该做的工作

ObjectMapper mapper = new ObjectMapper();
List<QuoteDTO> selectedQuoteDTOs = mapper.readValue(jsonSelectedQuoteDTOs, new TypeReference<List<QuoteDTO>>(){});

推荐阅读