【发布时间】:2021-04-18 18:03:14
【问题描述】:
给定 JSON 如下
[{"itemId":6,"itemTypeId":2,"expDate":"2021-04-17T22:00:00.000+00:00","creationDate":"2021-04-18T09:44:52.417+00:00","transactions":[{"transactionType":"USE","userId":0,"quantityBefore":6.0,"quantityAfter":4.0,"locIdBefore":2,"locIdAfter":2}]}]
我正在尝试将 JSON 解组为如上定义的 POJO,但是得到了
UnsupportedOperationException
我的想法是使用简单的杰克逊映射:
public static ArrayList<HistoryItem> convert (String response){
ObjectMapper mapper = new ObjectMapper();
ArrayList<HistoryItem> itemList = new ArrayList<>();
try {
itemList = (ArrayList<HistoryItem>)mapper.readValue(response, new TypeReference<List<HistoryItem>>(){});
} catch (IOException e) {
e.printStackTrace();
}
return itemList;
}
对于具有简单对象类型(如字符串、长整数、整数等)的字段的简单对象,它工作正常,但是当我添加 ArrayList 时,我得到了那个错误。任何想法我的问题是什么?
我的班级 HistoryItemDto:
public class HistoryItemDto {
private Long itemId;
private Long itemTypeId;
private Date expDate;
private Date creationDate;
private ArrayList<HistoryTransactionDto> transactions;}
我的班级 HistoryTransactionDto:
public class HistoryTransactionDto {
private TransactionType transactionType;
private Long userId;
private float quantityBefore;
private float quantityAfter;
private Long locIdBefore;
private Long locIdAfter;}
它们都包括getter、setter、无参数构造函数和每个参数构造函数。
提前....检查了很多网站,如 baeldung、jackson 文档、stackoverflow 的帖子,但没有找到任何答案。
【问题讨论】:
-
您到底遇到了什么类型的错误?
-
@mnestorov
UnsupportedOperationException如帖子中所写,仅在跟踪convert方法的第 5 行时可见 -
我的错,完全错过了
-
在您的
convert方法中,您使用HistoryItem,但稍后您有课程HistoryItemDto。可能这只是您问题中的一个错字。或者这真的是两个不同的类? -
如果我将 HistoryItemDto 重命名为 HistoryItem,它可以完美运行。 (JDK11)
标签: java jackson unmarshalling