给定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,hovewer获取
UnsupportedOperationException
我的想法是使用简单的jackson映射:
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;
}
对于具有简单对象类型(如String、Long、Integer等)的简单对象,它工作得很好,但是当我添加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 docs,stackoverflow的帖子,都没有找到我的原因。
发布于 2021-04-18 19:00:55
我也遇到过同样的问题,为了解决这个问题,不要使用列表(包括ArrayList或任何其他类型的迭代器),而要使用基本数组:
public static ArrayList<HistoryItem> convert (String response) {
ObjectMapper mapper = new ObjectMapper();
ArrayList<HistoryItem> itemAsArrayList = new ArrayList<>();
try {
HistoryItem[] responseAsArray = mapper.readValue(response, HistoryItem[].class);
Collections.addAll(itemAsArrayList, responseAsArray);
} catch (IOException e) {
e.printStackTrace();
}
return itemAsArrayList;
}
https://stackoverflow.com/questions/67151835
复制相似问题