字符串转换为List<String>时候抛出异常:com.alibaba.fastjson2.JSONException: TODO : s

前言:

一个字符串想要能够转换为 List,其本身必须是具备 List 属性的字符串。

问题现象:

项目中需要对第三方接口返回的字符串转换为 List,就想到了使用 fastjson 来处理。

代码如下:

Object obj = data.get(SignConstant.PERMISSIONS);
List<String> list = JSON.parseArray(obj .toString(), String.class);

本以为上述的代码可以轻松解决问题,不出意外还是出意外了,报错信息如下:

com.alibaba.fastjson2.JSONException: TODO : sat com.alibaba.fastjson2.reader.ObjectReaderImplObject.readObject(ObjectReaderImplObject.java:192)at com.alibaba.fastjson2.reader.ObjectReaderImplList.readObject(ObjectReaderImplList.java:435)at com.alibaba.fastjson.JSON.parseArray(JSON.java:500)

一看人都啥了,啥呀,这都啥呀。。。。。。
在这里插入图片描述

难道 fastjson 连一个字符串转 List 还搞不定,在我这个场景还真搞不定…没办法,报错了得想办法解决啊,查阅资料,有说 fastjson 版本问题,有说 fastjson 2.0 版本源码根本就没有实现 parseArray 这个方法,好家伙,看来遇到这种情况的还不在少数,但是好像跟我这情况都不太符合啊,甚至 GitHub 上关于该问题还有个 issue 打开着在,那看来就只能自己想办法解决了。

GitHub 字符串转换为 List issue 讨论区

这里提供两种解决方法,还下:

  • 方案一:判断对象是否是 list 类型,直接进行强转。
  • 方案二:把对象转换为 JSONString,然后再使用 fastjson 转换为 List。
//方案一Object obj = data.get(SignConstant.PERMISSIONS);if (obj instanceof List) {List<String> lsit = (List<String>) obj;}//方案二:List<String> lsit1 = JSON.parseObject(JSON.toJSONString(obj), List.class);List<String> lsit2 = JSON.parseObject(JSON.toJSONString(obj), new TypeReference<List<String>>() {});List<String> lsit3 = JSON.parseArray(JSON.toJSONString(obj), String.class);

obj.toString() 效果如下:
在这里插入图片描述

JSON.toJSONString(obj) 效果如下:
在这里插入图片描述

反思:

前面的错误代码中,不应该使用 obj.toString(),我这里的 obj 对象本质就是一个 List 对象,使用 obj.toString() 后,就完完全全变成了一个字符串了,再使用fastjson 转换为 List,这肯定是会出错的,因此我们只需要把对象转换为 JSONString,然后再使用 fastjson 转换为 List 即可。

如有错误的地方欢迎指出纠正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/814832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Secure Copy Protocol or SCP - 安全拷贝协议

Secure Copy Protocol or SCP - 安全拷贝协议 1. scp 文件传输1.1. 将远程文件拷贝到本地1.2. 将本地文件拷贝到远程1.3. 将远程目录拷贝到本地 References Secure Copy (remote file copy program) The SCP program is a software tool implementing the SCP protocol as a s…

贪吃蛇web小游戏

蛇的移动&#xff1a;通过定时器实现蛇的自动移动&#xff0c;并通过监听用户的键盘输入来改变蛇的移动方向。 食物的生成&#xff1a;随机在地图上生成食物&#xff0c;并在蛇吃到食物时更新得分和食物的位置。 墙和边界的碰撞判断&#xff1a; 监测蛇是否撞墙&#xff08;遍…

Codeforces Round 295 (Div. 2) B. Two Buttons (BFS)

瓦夏发现了一个奇怪的装置。装置的前面板上有一个红色按钮、一个蓝色按钮和一个显示正整数的显示屏。点击红色按钮后&#xff0c;设备将显示的数字乘以 2 2 2。点击蓝色按钮后&#xff0c;设备从显示屏上的数字中减去 1 1 1。如果某个时候数字不再是正数&#xff0c;设备就会…

格式化D盘后C盘内的文件会受影响吗?深度解析

在计算机的日常使用中&#xff0c;磁盘格式化是一个常见的操作&#xff0c;它能帮助我们清除磁盘上的数据&#xff0c;为新的数据腾出空间。然而&#xff0c;当涉及到系统盘和其他存储盘时&#xff0c;许多用户会担心一个问题&#xff1a;如果我格式化了非系统盘&#xff0c;比…

paddle ocr

paddle安装教程&#xff0c;git clone xxxgit https://blog.csdn.net/Castlehe/article/details/117356343 只有paddle 1.x 的教程&#xff1a;https://github.com/PaddlePaddle/PaddleOCR/blob/static/doc/doc_en/quickstart_en.md 报错是因为安装的是paddle 2.x而教程只给了…

蓝桥杯真题演练:2023B组c/c++

日期统计 小蓝现在有一个长度为 100 的数组&#xff0c;数组中的每个元素的值都在 0 到 9 的范围之内。 数组中的元素从左至右如下所示&#xff1a; 5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2 7 0 5 8 8 5 7 0 9 9 1 9 4 4 6 8 6 3 …

连锁品牌企业为何不能使用通用收银系统?

在连锁服装品牌企业中&#xff0c;加盟连锁店往往选择使用特定的收银管理系统&#xff0c;而不是市面上通用的收银系统。这一选择背后有着几个主要原因&#xff1a; 首先&#xff0c;加盟连锁店的核心在于品牌的一致性和管理。采用统一的收银管理系统可以确保所有门店在运营和管…

2024连锁收银系统哪个好 有什么特点

在服装连锁店的经营中&#xff0c;选择一款优秀的收银系统至关重要。收银系统不仅仅是简单的结账工具&#xff0c;更是管理销售、库存和客户信息的关键平台。以下将介绍几款优秀的服装连锁店收银系统&#xff0c;以便您更好地了解各款系统的特点和优势。 1. 商淘云连锁店收银系…

【CSS】一篇文章讲清楚screen、window和html元素的位置:top、left、width、height

一个Web网页从内到外的顺序是&#xff1a; 元素div,ul,table... → 页面body → 浏览器window → 屏幕screen 分类详情屏幕screen srceen.width - 屏幕的宽度 screen.height - 屏幕的高度&#xff08;屏幕未缩放时&#xff0c;表示屏幕分辨率&#xff09; screen.availLeft …

数据分析_Pandas中的OLAP(类SQL中窗口函数)

数据分析_Pandas中的OLAP(类SQL中窗口函数) 窗口函数: 被称为联机分析函数 (OLAP, Online Anallytical Processing) 或者分析函数(Analytic Function)。 窗口函数允许用户根据数据行与所谓窗口 [so-called window] 中的当前行之间的某种关系对数据行执行计算, 并对每一行数据…

中国绿色技术助力全球能源转型(国际论坛)

中国的清洁能源发展战略和实践对全球能源结构转型产生了深远影响。作为全球最大的可再生能源生产和消费国&#xff0c;中国在推动国内可再生能源产业发展的同时&#xff0c;也积极与世界各国分享技术和经验&#xff0c;促进全球范围内清洁能源技术的普及和应用成本的降低。例如…

C 408—《数据结构》易错考点200题(含解析)

目录 Δ前言 一、绪论 1.1 数据结构的基本概念 : 1.2 算法和算法评价 : 二、线性表 2.2 线性表的顺序表示 : 2.3 线性表的链式表示 : 三、栈、队列和数组 3.1 栈 3.2 队列 3.3 栈和队列的应用 3.4 数组和特殊矩阵 四、串 4.2 串的模式匹配 五、树与二叉树 5.1 树的基…

解决 Mac App Store 不显示可用更新的问题

相信不少人遇到过 Mac App Store 有更新提示&#xff0c;但进入应用商店的「更新」一栏不会显示可用更新的软件列表。只有进入对应软件详情页才会显示可更新。 解决方法是使用快捷键「⌘ R」来刷新页面。 Related Link: Troubleshooting App Store Issues

Docker 安装 RocketMQ

目录 一、新建两个配置文件 1.1 创建docker-compose.yml文件 1.2 .新建broker.conf文件 二、运行 三、可视化界面 一、新建两个配置文件 1.1 创建docker-compose.yml文件 version: 3.5 services:rmqnamesrv:image: foxiswho/rocketmq:servercontainer_name: rmqnamesrvports…

Gradle 实战 - 命令行传递-ApiHug准备-工具篇-013

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace ApiHug …

人工智能科普:人工智能的分类

人工智能的分类多种多样&#xff0c;根据不同的标准和应用场景&#xff0c;可以将其划分为多个不同的类别。以下是对人工智能分类的详细探讨。 一、按应用领域分类 1. 智能机器人&#xff1a;智能机器人是人工智能技术在机器人领域的应用。它们能够根据环境和任务的不同进行自…

【论文速读】| 基于大语言模型的模糊测试技术

本次分享论文为&#xff1a;Large Language Models Based Fuzzing Techniques: A Survey 基本信息 原文作者&#xff1a;Linghan Huang, Peizhou Zhao, Huaming Chen, Lei Ma 作者单位&#xff1a;悉尼大学&#xff1b;东京大学&#xff1b;阿尔伯塔大学 关键词&#xff1a;…

DP算法的精髓是什么?

概述 DP(动态规划)通过将原问题拆分成一系列子问题&#xff0c;并通过对子问题求解。所以&#xff0c;也可以把DP算法定义为“多阶段决策最优解模型”&#xff08;决策树&#xff09; 同时该模型也具有以下明显特征&#xff1a; 问题的最优解包含子问题的最优解。反过来说的…

[全网最全]2024MathorCup妈妈杯ABCD题成品论文33页+配套完整代码数据汇总

所有题目的每一小问解答&#xff08;含配套代码和数据&#xff09;都已经更新完毕&#xff0c;其中C题成品论文33页更新&#xff0c;B题论文更新&#xff0c;A题半成品论文21页完整解答代码数据。 &#xff08;完整版的资料放在文末了&#xff09; A题 移动通信网络中PCI规划问…

使用云服务器搭建CentOS操作系统

云服务器搭建CentOS操作系统 前言一、购买云服务器腾讯云阿里云华为云 二、使用 XShell 远程登陆到 Linux关于 Linux 桌面下载 XShell安装XShell查看 Linux 主机 ip使用 XShell 登陆主机 三、无法使用密码登陆的解决办法 前言 CentOS是一种基于Red Hat Enterprise Linux&#…