首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何拆解杰克逊的反对意见

如何拆解杰克逊的反对意见
EN

Stack Overflow用户
提问于 2021-04-18 18:03:14
回答 1查看 43关注 0票数 1

给定JSON如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 [{"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获取

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
UnsupportedOperationException

我的想法是使用简单的jackson映射:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class HistoryItemDto {
private Long itemId;
private Long itemTypeId;
private Date expDate;
private Date creationDate;
private ArrayList<HistoryTransactionDto> transactions;}

我的类HistoryTransactionDto:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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的帖子,都没有找到我的原因。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-18 19:00:55

我也遇到过同样的问题,为了解决这个问题,不要使用列表(包括ArrayList或任何其他类型的迭代器),而要使用基本数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67151835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文