泛型方法 Gson解析 com.google.gson.internal.LinkedTreeMap cannot be cast to XXX

Gson数据类型转换异常 java.lang.ClassCastException: com.google.gson.internal.出现原因已经解决方案 gson泛型指定 Gson数据类型转换异常 java.lang.ClassCastException: com.google.gson.internal.出现原因已经解决方案, 今天写项目发现了一个用gson做JSON串回List的数据对象时,报了这个错误,如下 List<User> userList; userList=gson.fromJson(jsonStr),Li... 阅读详情

   今天在尝试用泛型写json解析方法的时候出现了问题,看错误信息就是‘类型’转换问题。调试断点,果然发现这LinkedTreeMap有点不同,如下:


如果代码这样写:

    public static <T> List<T> jsonToDto(String message, String jsonHead,T t){//这里是用的T
        JsonObject jsonObject = new JsonParser().parse(message).getAsJsonObject();
        JsonArray jsonArray = jsonObject.getAsJsonArray(jsonHead);

        Gson gson = builder.create();
        List<T> list = new ArrayList<>();
        for (JsonElement jsonElement : jsonArray) {
            t = gson.fromJson(jsonElement,new TypeToken<T>(){}.getType()); // TypeToken
            list.add(t);
        }
        return list;
    }

对应的结果如下:
这里写图片描述


解释TypeToken


如果这样写:

  public static <T> List<T> jsonToDto(String message, String jsonHead,Class<T> cls){ //这里是Class<T>
        JsonObject jsonObject = new JsonParser().parse(message).getAsJsonObject();
        JsonArray jsonArray = jsonObject.getAsJsonArray(jsonHead);

        Gson gson = builder.create();
        List<T> list = new ArrayList<>();
        for (JsonElement jsonElement : jsonArray) {
            list.add(gson.fromJson(jsonElement,cls)); //cls
        }
        return list;
    }

对应的结果如下:

这里写图片描述

可以看出两种方法解析的结果的结构是不一样的,让我们来看一看下图:
这里写图片描述

有两个方法对应我上述两段代码,返回类型都是T,当使用第一种方法时返回的是LinkedTreeMap,所以当我把解析后的集合遍历赋值给JavaBean的时候就会报“类型”转换错误的异常。解决方法就是使用第二种方法。或者参考LinkedTreeMap的处理方法

 for (TestBean bean : list) {
   ....       
 }
开发中复杂Json解析(LinkedTreeMap) 开发中遇到的复杂JSON,用TypeToken来进行处理:(当然还有第二种解析方式,请查看http://blog.csdn.net/jason_996/article/details/78039799) 处理方法: 1,先将接口返回的JSON,用gson.tojson(map)方法,将LinkedTreeMap对象转成String。 2,再通过gson.fromjson(string,type)方法,将String转成LinkedTreeMap。用到了Type type=new TypeToken(){}.getType; 3,再将LinkedTreeMapf进行遍历 立即下载

相关推荐

告别简陋行情!在Ubuntu24.04系统用Wine9.0跑同花顺远航版的全流程记录

本文详细记录了在Ubuntu 24.04系统上,通过Wine 9.0兼容层成功安装并流畅运行同花顺远航版的全过程。文章对比了该方案与官方简陋Linux原生版本的功能差异,重点解决了高分辨率屏幕下的字体与界面显示问题,并提供了关键配置调优与长期维护建议,为Linux用户提供了功能完备的专业金融行情解决方案。

weixin_29207533的博客 1071

使用 Gson 库进行 JSON 解报错com.google.gson.internal.LinkedTreeMap cannot be cast to java.util.LinkedHashMap

使用 Gson 库进行 JSON 解报错com.google.gson.internal.LinkedTreeMap cannot be cast to java.util.LinkedHashMap

Analyze_ing的博客 1751

ST7789T3与CST816D驱动全解析,面试技巧第11篇:嵌入式面试场景问答 10 连发。

SPI模式下,SCLK、MOSI、CS、DC、RST为必需引脚;8080模式下需连接D0-D7、WR、RD等信号线。CST816D触摸芯片通常通过I2C接口通信,需连接SCL、SDA及INT(中断)引脚。确保电源引脚(VCC、GND)稳定供电,ST7789T3典型工作电压为3.3V。显示异常时检查时序参数,如SPI时钟频率(建议≤40MHz)、数据建立时间。初始化流程需发送一系列命令序列,包括设置像素格式、扫描方向、帧率控制等。扫描方向(MADCTL)可调整显示旋转角度,需根据实际硬件布局配置。

a967gsvj的博客 372

com.google.gson.internal.LinkedTreeMap cannot be cast to XXX

刚开始非常自信,debug没问题线上有问题,大概率就是混淆文件没有添加keep,于是本地添加对SDK中类的keep,本地打包release验证,不出意外还是崩溃。因为没办法修改SDK,最终用了一种tricky的解决方案,在获取到对象的时候做个类型判断,如果是。,仔细想想就是gson做反序列化时无法转化为我们的类型,于是检查gson的语法,以为是两层。导致,去google查询按照网上的代码修改序列化和反序列化的代码还是不行。另外写一个通用的Gson序列化和反序列化的代码。仔细看崩溃的原因,关键字是。

_陈泡泡的博客 2665

特征提取 Features Extraction

介绍了特征提取的基本概念,从分类变量,文本信息和图片信息中进行特征提取的方法,以及实现特征提取的类库

JasonH2021的博客 1万+

Feature ‘alsa‘ was enabled, but the pre-condition ‘config.unix && !config.qnx && libs.alsa‘ failed解决

这个问题主要是Qt多媒体插件中缺少了ALSA音频库,所以我们需要自行先编译ALSA 在执行./configure的时候,配置项中ALSA为no Qt Multimedia: ALSA ................................... no GStreamer 1.0 .......................... no GStreamer 0.10 ......................... no Video for Linux .............

有问题或资源连接有缺失的可以私信公众号新潮看世界获取 2587

【Gson】com.google.gson.internal.LinkedTreeMap cannot be cast to io.renren.modules.miniIO.dto.IpWhrite

【Gson】com.google.gson.internal.LinkedTreeMap cannot be cast to io.renren.modules.miniIO.dto.IpWhrite

ooooooooooooooxiaosu的博客 1077

学Simulink——基于Simulink的单相PWM整流器PI电压外环+电流内环控制建模示例

本文详细介绍了基于Simulink的单相PWM整流器双闭环控制仿真方法。通过电压外环PI控制器调节有功功率生成电流指令,电流内环PI控制器实现正弦电流跟踪,最终达到输出电压稳定(400V±2V)、输入电流THD<3%、功率因数>0.99的目标。文章包含系统架构、数学模型、Simulink搭建步骤(主电路、PI控制器、SPWM调制等)及三种典型工况的仿真验证,并给出电感设计、数字实现等工程实践要点。该方案克服了传统整流器高谐波、低功率因数的问题,为绿色电源开发提供了可验证的仿真模型。

xiaoheshang_123的博客 74

com.google.gson.internal.LinkedTreeMap cannot be cast to xxx

问题描述Gson泛型解析时Json报错:com.google.gson.internal.LinkedTreeMap cannot be cast to xxx先看下返回的Json数据格式{ "code": 200, "data": [ { "id": null, "type": "free",

尼诺和尼可 1万+

海洋捕食者算法(MPA)详解:从海洋生态智慧到高性能优化

摘要: 海洋捕食者算法(MPA)是一种基于海洋生态觅食行为的元启发式优化算法,模拟捕食者(如鲨鱼)的布朗运动和莱维飞行策略进行全局与局部搜索。算法分为三阶段:高速比阶段(全局探索)、单位速度比阶段(平衡搜索)和低速比阶段(局部开发),通过精英矩阵和FADs效应(概率扰动)避免早熟收敛。MPA具有参数少、收敛快、寻优能力强等特点,适用于复杂优化问题,其数学模型将生物行为转化为随机游走与自适应策略,并通过收敛因子动态调整探索-开发平衡。实验表明,MPA在多个基准问题上表现优异。

qq_42212808的博客 273

基于STM32设计的水质检测系统_333

水质安全对生态环境、农业生产、工业制造以及人类健康至关重要。针对传统水质检测方式检测周期长、成本高、实时性差的问题,本项目设计并实现了一种基于STM32的水质检测系统。系统采用STM32F103RCT6作为主控芯片,集成水温、pH值、电导率和浊度等传感器,能够实时采集水质数据,并通过OLED显示屏进行本地显示。同时,利用Air724UG 4G模块通过MQTT协议将数据上传至华为云IoT平台,实现远程监测。用户可通过Qt5开发的Android手机APP和Windows上位机查看水质数据,并接收超限报警提示。此

713

Gson解析 com.google.gson.internal.LinkedTreeMap cannot be cast to XXX

问题描述:项目从网络获取数据保存到sharedpreferences,再从sharedpreferences获取。由于要保存到shp的是arraylist,所以需要使用Gson解析,在解析过程中报了如下错误: com.google.gson.internal.LinkedTreeMap cannot be cast to XXX 原先代码如下: 将list转化为json字符串保存在本地: /** * 保存List */ public static <T> void

qq_45436365的博客 8936

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Gson解析异常com.google.gson.internal.LikedTreeMap connot be case to class

异常 fun <T> json2List(gson: Gson, json: String?, clazz: Class<T>): List<T>? { val typeToken: TypeToken<List<T>> = object : TypeToken<List<T>>() {} return try { gson.fromJson(json, type

EleganceKing的博客 757

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

GsonConverterFactory封装Gson解析抛出 com.google.gson.internal.LinkedTreeMap cannot be cast to XXX

原因在于解析的JSON数据结构为无字段名称的二维数组,解析数据时无法从 com.google.gson.internal.LinkedTreeMap强转为XXX(标题中的data class),归根到底就是,当二维数组均无字段名称的时候,第二维数据就无法通过@SerializedName从json映射到相应的data class存放     解析的JSON数据:   解决方法,服务器把...

Ricardo_0324的博客 2338

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

GSON源码LinkedTreeMap学习

  在学习GSON的过程中,发现了GSON的基础数据类型LinkedTreeMap,因此展开学习。 private final LinkedTreeMap<String, JsonElement> members = new LinkedTreeMap<String, JsonElement>();   LinkedTreeMap,...

PGG123456的博客 2095

LinKedHashMap和TreeMap介绍

文章目录前言一、LinKedHashMap源码分析:继承关系:属性:构造器:私有内部类put 方法:LinKedHashMap总结二、TreeMap源码分析:继承关系:属性:构造器:私有内部类方法:TreeMap总结: 前言 我们对LinKedHashMap和TreeMap研究都是基于HashMap为参考来研究一下他们独有的特点,和维护这些特点的方法。 提示:以下是本篇文章正文内容,下面案例可供参考 一、LinKedHashMap源码分析: LinKedHashMap继承自HashMap<K,V

liangcheng0213的博客 3061

java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to xxx

GsonUtil.fromjson、GsonUtil.toJsonString、json与类的转换过程

Mayer97的博客 3461

LinkedTreeMap列表转换

public static <T> List<T> getList(List<T> mList, Class<T[]> aClass){ Gson gson = new Gson(); String toJson = gson.toJson(mList); T[] array = gson.fromJson(toJson , (Type) aClass); List<T> newL..

qq_29059149的博客 3037

gson转化为带泛型的Map(K, V):com.google.gson.internal.LinkedTreeMap cannot be cast to xx(entity)

目录 错误日志: 解释: 原因: 错误代码: 解决方法 (零)、TypeToken解决 其他几种解决思路 (一)、当Map的Key为String类型时 正确代码1: (二)、通过 由Map的key组成的List,和有value组成的List解决 正确代码2: 错误日志: com.google.gson.internal.LinkedTreeMap canno...

0729Liang 5803

Android Gson类型转换错误解决 com.google.gson.internal.LinkedTreeMap

com.google.gson.internal.LinkedTreeMap不能转换到我的类(com.google.gson.internal.LinkedTreeMap cannot be cast to my class)I have some problems with getting my object from a JSON string. I got the class Product...

xkfer 5437

使用 gson,出现 LinkedTreeMap cannot be cast to xxx

java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to xxx一:正文前面的 叨叨1:首先定义自己的数据返回体,利用接口将数据返回到上层;(1)定义所有接口返回的最外层 基础结(2)定义符合所有请求返回数据的接口:2:其次完成 所有请求的封装:3:发起一个请求(在这里我就只模拟一下简单的数据结构,请求在本文中是非重点):(1)定义学生 Student 的JavaBean(2):发起一个 获取

qq_36652498的博客 2万+

java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to java.lang.Int

异常:java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to java.lang.Integer 原因:SQL查询结果为count()统计结果个数,gson返回数据为json格式,不能直接转换为基本数据类型。 解决:在查询SQL中未结果字段设置别名count() as count,...

赱乂的博客 2509

Java----Hashmap,LinkedMap和TreeMap三者的区别

Java----Hashmap,LinkedMap和TreeMap三者的区别

weixin_65237252的博客 2162

Java集合框架篇-70-LinkedHashMap和TreeMap基本使用

       这篇来学习LinkedHashMap和TreeMap基本使用,先来看看LinkedHashMap,在前面学习Set集合的时候,我们介绍了一个LinkedHashSet的类,这个也一样,算法实现是采用链表实现,属于HashMap家族。TreeMap是Map集合的另外一种实现方式,底层是二叉树实现。这篇,我们先来一个基本了解和使用就好。1.LinkedHashMap      Linke...

Anthony_tester的博客 1346
上一篇: SVN 删除误提交的文件
下一篇: IDEA found duplicate code
Aslan___
博客等级 码龄10年 10粉丝 35原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值