【exceptions】java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxxxx

Qt基础之十九:进程与QProcess 进程就是一个程序的执行实例,也就是正在运行的程序。对操作系统来说,进程就是一个担当分配系统资源CPU时间、内存的实体。在Qt 中,我们使用QProcess来表示一个进程。这个类可以允许我们的应用程序启动一个新的外部程序,并且与这个程序进行通讯。当外部程序开始启动时,QProcess的状态为Starting;外部程序已经启动时,QProcess的状态为Running,并发送started()信号;当外部层序退出了,QProcess的状态为NotRunning(初始状态),并发送finished()信号。 阅读详情

这个问题是我在用jackson将字符串准换成指定对象的List,转换的时候没有异常,但是通过for循环拿出对象使用的时候出现的问题.原来我的转换是写在controller里面,后来为了通用准备写到工具类中,但是发现一个问题,就是在controller中可以正确转换并在service中使用,通过工具类来获取后就在service中使用出抛出这个异常.

jackson中的问题

  • controller中的处理
// json解析器
ObjectMapper om = new ObjectMapper();
// 解析出来的所有明细
List<XXX> list = null;
try {
    details = om.readValue(getPara("json"),
            new TypeReference<List<XXX>>() {
            });
} catch (IOException e) {
    log.info("json解析失败:" + e.getMessage());
    return;
}

这样的处理结果是正确的,可以正常使用,但是写在工具类中出现了这个异常

  • 工具类中的处理
@SuppressWarnings("unchecked")
public static <T> List<T> parseJsonList(String json, Class<T> clazz) {
    try {
        ObjectMapper INSTANCE = new ObjectMapper();
        return (List<T>) INSTANCE.readValue(json, new TypeReference<List<T>>() {
            });
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

转换没有出现问题,但是到使用的时候,这个List里面的对象是LinkedHashMap,并没有转化成我需要的T.导致了这个问题

  • 解决方法
  /**
    * @param json 准备转换json
    * @param clazz 集合元素类型
    * @return
    * @description json字符串转换成对象集合
    * @author paul
    * @date 2017年8月12日 下午1:28:27
    * @update 2017年8月12日 下午1:28:27
    * @version V1.0
    */
@SuppressWarnings("unchecked")
public static <T> List<T> parseJsonList(String json, Class<T> clazz) {
    try {
        JavaType javaType = getCollectionType(ArrayList.class, clazz); 
        return (List<T>) INSTANCE.readValue(json, javaType);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

/**
 * @param collectionClass 集合类
 * @param elementClasses 集合元素类
 * @return
 * @description 获取泛型的ColloectionType
 * @author paul
 * @date 2017年8月12日 下午2:17:38
 * @update 2017年8月12日 下午2:17:38
 * @version V1.0
 */
private static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {   
    return INSTANCE.getTypeFactory().constructParametricType(collectionClass, elementClasses);   
}

这个方法是我在网上找到的一个可用的方法,解决了这个问题。我怀疑jackson底层封装默认用了LinkedHashMap,所以出现了这个问题。

  • 举个栗子:
    有一个想要转化的结果类User为:
public class User {
    private int id;
    private String code;
    private String name;
    //...(getter,setter)
}

有一个工具类:

public class JsonUtil{
      /**
    * @param json 准备转换json
    * @param clazz 集合元素类型
    * @return
    * @description json字符串转换成对象集合
    * @author paul
    * @date 2017年8月12日 下午1:28:27
    * @update 2017年8月12日 下午1:28:27
    * @version V1.0
    */
    @SuppressWarnings("unchecked")
    public static <T> List<T> parseJsonList(String json, Class<T> clazz) {
        try {
            JavaType javaType = getCollectionType(ArrayList.class, clazz); 
            return (List<T>) INSTANCE.readValue(json, javaType);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * @param collectionClass 集合类
     * @param elementClasses 集合元素类
     * @return
     * @description 获取泛型的ColloectionType
     * @author paul
     * @date 2017年8月12日 下午2:17:38
     * @update 2017年8月12日 下午2:17:38
     * @version V1.0
     */
    private static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses)  {   
        return INSTANCE.getTypeFactory().constructParametricType(collectionClass, elementClasses);   
    }
}

在需要转换的地方如此调用就可以了:

String json = "{\"id\":1,\"code\":\"wang\",\"name\":\"王\"}";//一个示意json
List<User> users = JsonUtil.parseJsonList(json, User.class);//获取到了指定类型的list

推荐fastjson

fastjson是alibaba提供的解决json相关的工具包,很好用。这个问题在fastjson我试了一下没有问题,可以完美解决。

List<User> users= JSONObject.parseArray(json, User.class);

完美解决,推荐指数☆☆☆☆☆

我的博客中有一个JsonUtil工具类,不定时更新,解决方法也在里面

科研级YOLO26下采样革新:ContextGuided模块赋能,让特征降维兼具上下文感知的实战指南 在文件夹下新建,将上述类的代码写入其中。这一步是为了让YOLO26的代码架构能识别我们的自定义下采样模块。 阅读详情

相关推荐

基于STM32与CAN总线的多电机协同控制系统设计与实现

本文详细介绍了基于STM32与CAN总线的多电机协同控制系统设计与实现。该系统采用分布式架构,通过CAN总线实现多节点通信,结合梯形加减速算法和同步控制策略,有效解决了工业自动化中多电机同步性差的问题。文章涵盖硬件设计、通信协议、抗干扰措施及实战调试经验,为工业应用提供高可靠性解决方案。

tech5的博客 969

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx(实体类)

两个微服务通过feign调用后,提供方未指定返回泛型时,调用方调用后返回结果都会转换为 LinkedHashMap ,而调用方直接将结果强转为对象导致。错误场景:restful 风格使用时,返回值未指定泛型 RestUtils例:public ResultUtil queryUser(){}错误原因: LinkedHashMap 不能直接强转为对象。1. 服务提供方将返回结果指定泛型。2. 调用方处理返回结果。结果方案:任意选一种。

loveLifeLoveCoding的博客 2750

TCNOpen实现TRDP通信协议(源码编译运行测试)

概述 本文介绍了通过TCNOpen开源源码实现TRDP通信,包括源码下载,开发环境搭建,编译运行,测试。 Linux环境下编译运行TRDP (一) 下载CANOpen源码。 下载地址:https://sourceforge.net/p/tcnopen/trdp/HEAD/tree/ (二) 源码编译 下载源码解压过后,在根目录文件readme-makefile.txt有介绍源码的配置和编译方法。 在trdp/config目录下可以看到包含在linux环境下的编译配置文件LINUX_config;执行”m

fengweibo112的博客 9630

java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class com.example.prd.

对外暴露接口时,强转取值报错问题。

qq_46129756的博客 4343

PCL 区域生长分割【2026最新版】

区域生长算法原理介绍、代码实现以及一个具体实验场景的应用案例进一步实现将分割结果的分类保存至本地文件夹。最近一次更新时间为:2026年5月4日。

点云侠的博客 40万+

Altium Designer 超详细入门教程

本文是一份Altium Designer新手入门教程,详细介绍了从软件基础到PCB制版的全流程。主要内容包括:软件界面介绍与工程创建方法;原理图设计中的元件放置、电气连线、标注添加等操作;PCB设计的布局布线、铺铜和DRC检查;Gerber和钻孔文件的导出方法。教程还提供了分类整理的实用快捷键表和新手避坑指南,强调原理图编译和DRC检查的重要性。通过本教程,新手可以快速掌握AD基本操作,完成简单电路板的设计与制版文件导出。

学习中...... 814

Jackson: java.util.LinkedHashMap cannot be cast to X

本文翻译自:https://www.baeldung.com/jackson-linkedhashmap-cannot-be-cast 1.概述: Jackson是一个广泛使用的 Java 库,它允许我们方便地序列化/反序列化 JSON 或 XML。 有时,当我们尝试将 JSON 或 XML 反序列化为对象集合时,可能会遇到“java.lang.ClassCastException: java...

翎野君的博客 5795

199、影像技术 roadmap 规划:未来移动影像的技术趋势与芯片算力展望

本文探讨了未来移动影像技术的发展趋势与芯片算力规划。作者从实际案例出发,指出影像技术演进需平衡传感器、ISP、算力和功耗。文章分为三部分:1)传感器将从堆像素转向提升信息密度,重点关注双层晶体管结构、混合快门和多光谱技术;2)ISP架构将向可编程计算单元转型,强调神经网络加速、硬件化多帧融合和语义处理;3)芯片算力瓶颈在于数据搬运,需优化存算一体架构、专用DMA和统一内存。最后给出五点建议:避免盲目追高像素、重视持续功耗、平衡ISP灵活性、预留算力余量、加强传感器与ISP协同设计。作者强调,影像技术的突破在

sundong_81的博客 57

解决java.util.LinkedHashMap cannot be cast to…

解决java.util.LinkedHashMap cannot be cast to xxxx

AQA_MYkj的博客 3万+

高熵合金AlCoCrFeNi/金刚石摩擦案例代码

本文介绍金刚石与高熵合金AlCoCrFeNi摩擦的案例。 在之前的文章中,介绍过使用fix indent命令实现虚拟球的摩擦,本文介绍使用金刚石实体球实现高熵合金摩擦的方法。 主要的模拟过程如下: (1)基体建模 建使用原子替换法获得高熵合金初始模型,升温到3000K驰豫后,冷却至300K,获得平衡组织。 (2)摩擦球建模 在高熵合金平衡组织的模型中添加金刚石摩擦球,使用change_box命令扩大box尺寸,添加金刚石摩擦球,并设置混合力场。 (3)摩擦过程 摩擦球下压一定深度后,沿y方向进行摩擦,摩擦

lammps_jiayou的博客 2896

RedCap:一种通信技术的概述

总结起来,RedCap是一种基于数据包交换的通信技术,它提供了一种高效、可靠的数据传输机制。通过使用RedCap,我们可以轻松地发送和接收数据包,并确保数据的完整性和正确性。在上面的示例中,我们首先导入了RedCap库,并创建了一个RedCap实例。然后,我们定义了目标地址和源地址,并创建了一个数据包,其中包含了目标地址、源地址和要发送的数据。本文将介绍RedCap的基本原理和使用方法,并提供一些相关的源代码示例。RedCap还提供了其他一些功能,如数据包的重传机制、流量控制和拥塞控制等。

YgjWeb的博客 899

解决 报错 java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx(实体类)

类型转换异常:java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com

解决bug的路上 1万+

科研绘图系列:R语言绘制宏基因组分析的可视化图形(network & barplot & heatmap)

科研绘图系列:R语言多图形组合(network & barplot & heatmap)

专注生信领域 642

Spring-Data-Redis--解决java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx

说明 本文介绍解决Spring-Data-Redis的“java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx”报错的方法。 出现的场景 SpringBoot项目中使用Redis来进行缓存。把数据放到缓存中时没有问题,但从缓存中取出来反序列化为对象时报错:“java.lang.ClassCastException: java.util.LinkedHashMap cannot

IT利刃出鞘的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【ERROR】解决 报错 java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx(实体类)

解决 报错 java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx(实体类)

take_it_easy_hes的博客 1258

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to*****

通过调试,发现是LinkedHashMap类型,而不是实体类。

weixin_40906353的博客 5473

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【异常】类型转换异常:java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to XXX

对象没有在本地形成类型强引用,JVM没办法将当前对象关联到字节码文件

小谷围最靓的仔 2889

类型转换异常:java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.

问题场景: 1、前端传一个数组, 2、后台Controller用map接收。如下 @PostMapping(“add/xxxx”) public ResponseObj addXXXX(@RequestBody Map<String, Object> map){ } 3、Service业务类方法中,直接获取数组并转化为 实体的集合: List list = (List) map.get...

weixin_44685631的博客 1万+

已解决 java.util.LinkedHashMap cannot be cast to Object异常的正确解决方法,亲测有效,嘿嘿嘿

`java.util.LinkedHashMap cannot be cast to Object` 这个错误表明你正在尝试将一个 `LinkedHashMap` 类型的对象强制转换(cast)为 `Object` 类型,但这样的转换在 Java 中实际上是合法的,因为所有的类都是 `Object` 类的子类。所以,这个错误通常不是直接由这个类型转换引起的,而是可能由于以下几个原因导致的: ### 问题分析 1. **错误的类型检查**:你可能在代码中某个地方期望得到一个 `Object` 类型的对象,

PythonAigc的博客 5617

java报错:java.util.LinkedHashMap cannot be cast to ×××

1、报错原因在获取json数据转换为list类型以后,我以为是可以直接使用的,结果在使用中报错“java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to ×××”,搜索后发现是在转换成list时,list类型是LinkedHashMap,而不是我需要的List,Jackson在转换时按照标准行为将数据以List 返回,而不是作为 List 返回,但是我需要list中类型是我自定义的对象;

shenxiaomo1688的博客 2183

java.lang.ClassCastException:java.util.LinkedHashMap不能转换为实体类异常

报错信息大致为:java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.xxx.xxxx.entity.xxxx。 打断点调试,发现 得到的值属于LinkedHashMap类型,而不是实体类类型。 此时应该进行类型的转换,具体操作如下(仅为代码片段)—— //直接进行此种类型转换则会报文中标题的...

Ai_Ting_Java的博客 6695

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to XXX

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to XXX 今天在用feign进行远程调用的时候报错java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to XXX 类型转换异常 这里是consumer调用方 logger.info("添加评论方法被调用前端传来的参数是comment-->{},req

main_Scanner01的博客 3720

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx 类型转换异常

错误场景: 后端代码 项目中调取远程微服务返回的数据,用map集合接收数据进行处理,然后遍历集合信息的时候报错 !!! 项目中后台Controller 报错代码如下: @RequestMapping("getsadaData") public Map<String, List<YxtPmVO>> getSaData() { // 获取微服务的路径 String url = sadaUrl + "sada/pm/getPmYsWs"; // 服务返回的数据 Wrapp

JavaWebEngineer的博客 2636

有关 java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to XXXX 错误

最近 接口回调的时候 出现java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to XXXX 这样的错误,这个错误是指 类型转换失败,其实这个 问题很常见。我一般通常解决的方案是通过泛型区接受 然后再重写list ,这个问题就会被解决,下面是我 解决的一种方案。 List<XXX> list =...

qq_36423978的博客 2528

java.util.LinkedHashMap cannot be cast to java.lang.String

日常我们在使用redisTemplate对象操作redis数据的可能会出现java.util.LinkedHashMap cannot be cast to java.lang.String的异常,说的是无法将java.util.LinkedHashMap强制转换为java.lang.String 问题 在获取到redis中数据的时候不要强制转换为某一个java对象,例如下面我获取数据的时候强制转换为了String类型,这种操作当然会报错。就好比把一个不确定的类型强制转换为String他坑定报错。

qq_45172779的博客 1万+

java.util.LinkedHashMap cannot be cast to

异常描述及复现 FdcpRes对象里有一个List属性。首先把FdcpRes对象变为JSON字符串,然后在把JSON字符串变为FdcpRes对象,此时再获取List属性并且强转,就会报错。 报错为:java.util.LinkedHashMap cannot be cast to 解决办法 从json字符串转换为FdcpRes的对象中已经没有了泛型,所以可以把这个FdcpRes里的data字段变为字符串重新反序列化 源码下载 https://gitee.com/cbeann/Demooo/tree/ma

CBeann的博客 6604
上一篇: 【JFinal】JFinal的拦截器获取和修改controller返回的json对象
下一篇: 【utils】将指定的mysql数据库中的表生成java实体类
ColdFireMan
博客等级 码龄10年 27粉丝 112原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值