前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java.util.LinkedHashMap cannot be cast to

java.util.LinkedHashMap cannot be cast to

作者头像
CBeann
发布2023-12-25 19:24:12
1950
发布2023-12-25 19:24:12
举报
文章被收录于专栏:CBeann的博客CBeann的博客

异常描述及复现

FdcpRes对象里有一个List属性。首先把FdcpRes对象变为JSON字符串,然后在把JSON字符串变为FdcpRes对象,此时再获取List属性并且强转,就会报错。 报错为:java.util.LinkedHashMap cannot be cast to

在这里插入图片描述
在这里插入图片描述

解决办法

从json字符串转换为FdcpRes的对象中已经没有了泛型,所以可以把这个FdcpRes里的data字段变为字符串重新反序列化

代码语言:javascript
复制
package json2objerror;

import untils.JsonUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * @author chaird
 * @create 2022-04-17 13:11
 */
public class MainOk {

  public static void main(String[] args) {
    FdcpRes res = buildRes();
    // 创建JSON字符串
    String s = JsonUtils.objectToJson(res);
    FdcpRes fdcpRes = JsonUtils.jsonToPojo(s, FdcpRes.class);
    //把List对象里重新变为Json字符串,再重新把Json字符串变为List对象就Ok了
    s = JsonUtils.objectToJson(fdcpRes.getData());
    List<Ecodata> data = JsonUtils.jsonToList(s, Ecodata.class);
    for (Ecodata datum : data) {
      System.out.println(datum);
    }
  }


  public static FdcpRes buildRes(){
    // 创建两个对象
    List<Ecodata> ecodataList = new ArrayList<>();
    Ecodata e1 = new Ecodata();
    e1.setId(1);
    e1.setValue(1D);
    ecodataList.add(e1);
    Ecodata e2 = new Ecodata();
    e2.setId(2);
    e2.setValue(2D);
    ecodataList.add(e2);
    // 封装结果
    FdcpRes res = new FdcpRes();
    res.setCode(200);
    res.setData(ecodataList);
    return res;
  }
}
在这里插入图片描述
在这里插入图片描述

源码下载

https://gitee.com/cbeann/Demooo/tree/master/java-demoo/src/main/java/json2objerror

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 异常描述及复现
  • 解决办法
  • 源码下载
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档