Java 从 JSON 转换为对象列表
Java convert to a list of objects from 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
不是 QuoteDTO
类型,而是 LinkedHashMap
.
类型
导致我收到以下错误:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast
to com.abc.model.QuoteDTO
当我这样做时:
for (QuoteDTO selectedQuoteDTO : selectedQuoteDTOs) {
问题
将 JSON 转换为 JAVA 时,如何将对象转换为 List<QuoteDTO>
而不是 List<LinkedHashMap>
?
LinkedHashMap
键是QuoteDTO
成员变量的名称。
试试这个。这应该可以完成工作
ObjectMapper mapper = new ObjectMapper();
List<QuoteDTO> selectedQuoteDTOs = mapper.readValue(jsonSelectedQuoteDTOs, new TypeReference<List<QuoteDTO>>(){});
我正在使用 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
不是 QuoteDTO
类型,而是 LinkedHashMap
.
导致我收到以下错误:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.abc.model.QuoteDTO
当我这样做时:
for (QuoteDTO selectedQuoteDTO : selectedQuoteDTOs) {
问题
将 JSON 转换为 JAVA 时,如何将对象转换为 List<QuoteDTO>
而不是 List<LinkedHashMap>
?
LinkedHashMap
键是QuoteDTO
成员变量的名称。
试试这个。这应该可以完成工作
ObjectMapper mapper = new ObjectMapper();
List<QuoteDTO> selectedQuoteDTOs = mapper.readValue(jsonSelectedQuoteDTOs, new TypeReference<List<QuoteDTO>>(){});