java工具:《List<User>转jsonArray》

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: java工具:《List<User>转jsonArray》

image.png

@[toc]

一、介绍

这段代码演示了使用阿里巴巴 Fastjson 库将 Java 对象列表转换为 JSONArray 的正确方法,并特别指出了常见的错误写法。

首先创建了一个包含多个 User 对象的 List 列表。代码重点展示了两种转换方式:

  • 错误写法:直接调用 list.toString() 后使用 JSONArray.parseArray() 解析,由于 List.toString() 输出格式不是标准 JSON 格式,会抛出解析异常
  • 正确写法:先通过 JSONObject.toJSONString(list) 将列表序列化为标准 JSON 字符串,再使用 JSONArray.parseArray() 解析为 JSONArray

同时注释中还提供了另一种正确方式:手动遍历列表,创建 JSONObject 并逐个添加到 JSONArray 中。

二、代码

@Test
public void listConverjJsonArray(){
   
    List<User> list = new ArrayList<>();
    list.add(new User(1, "a"));
    list.add(new User(2, "b"));
    //错误写法,因为list.toString()输出[User(id=1, name=a), User(id=2, name=b)]。这东西无法json解析,会报错:com.alibaba.fastjson.JSONException: syntax error, pos 2, line 1, column 3[User(id=1, name=a), User(id=2, name=b)]
    //        JSONArray jsonArray =JSONArray.parseArray(list.toString());
    //正确写法,简写方式
    JSONArray jsonArray =JSONArray.parseArray(JSONObject.toJSONString(list));

    //正确写法,复杂方式
    //        JSONArray jsonArray = new JSONArray();
    //        JSONObject jsonObject = null;
    //        for (User user: list) {
   
    //            jsonObject = new JSONObject();
    //            jsonObject.put("id", user.getId());
    //            jsonObject.put("name", user.getName());
    //            jsonArray.add(jsonObject);
    //        }
    System.out.println(jsonArray);
}

image.png

重要信息

image.png
image.png
image.png

目录
相关文章
|
2月前
|
安全 Java 索引
java工具:《对Collections.sort排序后我想制定查询几条,比如list有10条,我只想获取前4条》
java工具:《对Collections.sort排序后我想制定查询几条,比如list有10条,我只想获取前4条》
123 12
|
3月前
|
Java
java工具:《Java 8 Stream实战:一行代码搞定集合对象类型转换》
java工具:《Java 8 Stream实战:一行代码搞定集合对象类型转换》
166 6
java工具:《Java 8 Stream实战:一行代码搞定集合对象类型转换》
|
2月前
|
Java
java工具:《List集合按照某个属性值又打大小排序》
java工具:《List集合按照某个属性值又打大小排序》
159 3
|
2月前
|
存储 消息中间件 运维
阿里云服务器通用算力型u2a实例介绍:产品优势、特性、适用场景与最新活动价格
阿里云推出的通用算力型u2a实例,专为中小企业及初创公司设计,以高性价比为核心,算力性能较前代提升20%~35%,价格却降低9%~22%,综合性价比提升超50%。u2a实例支持跨平台热迁移,兼容多代际CPU,确保应用平滑迁移,降低运维复杂度。其采用双单路服务器架构,提升稳定性与安全性,且具备强大的计算、卓越的存储I/O及强劲的网络性能,覆盖从数据库到企业应用的全场景需求。
|
2月前
|
弹性计算 关系型数据库 数据库
如何获取和使用阿里云优惠券?2026年领取渠道及使用指南
阿里云优惠券含代金券、满减券、折扣券三类,覆盖ECS/OSS/RDS等主流产品。新用户、学生(300元无门槛)、企业(最高1728元)均可领,通过权益中心或活动页领取,下单自动匹配抵扣,助您低成本上云。
270 2
|
2月前
|
存储 弹性计算 数据库
阿里云优惠券在哪里领取或申请?个人、学生和企业分别可领取哪些优惠券
阿里云每年推出多种优惠券,降低用户上云门槛和成本,包括新用户满减券、上云礼包、按量达标代金券等,可在阿里云活动中心领取。学生用户可通过“云工开物”计划领取300元无门槛优惠券及其他算力包。企业用户可申请迁云补贴和出海补贴,降低迁移和出海成本。优惠券可在阿里云控制台统一管理。阿里云通过活动中心、云工开物、企业上云第一站构建了覆盖个人、学生、企业的优惠券体系。
|
2月前
|
存储 分布式计算 运维
迅雷基于阿里云 EMR Serverless Spark 实现数仓资源效率与业务提升
迅雷基于阿里云 EMR Serverless Spark 实现数仓资源效率与业务提升,在迁移到 EMR Serverless Spark 之后,TCO 明显下降,平台按作业生命周期弹性拉起与回收,只为实际消耗付费;同时,托管化带来了稳定性与调度效率提升;更关键的是交付确定性提升,大作业整体可提速约 1 小时,报表链路从长尾波动变成更可控的出数节奏。
|
设计模式 人工智能 安全
AQS:Java 中悲观锁的底层实现机制
AQS(AbstractQueuedSynchronizer)是Java并发包中实现同步组件的基础工具,支持锁(如ReentrantLock、ReadWriteLock)和线程同步工具类(如CountDownLatch、Semaphore)等。Doug Lea设计AQS旨在抽象基础同步操作,简化同步组件构建。 使用AQS需实现`tryAcquire(int arg)`和`tryRelease(int arg)`方法以获取和释放资源,共享模式还需实现`tryAcquireShared(int arg)`和`tryReleaseShared(int arg)`。
565 32
AQS:Java 中悲观锁的底层实现机制
|
7月前
|
消息中间件 存储 关系型数据库
消息队列四大核心消息类型深度解析:普通、顺序、事务、定时消息原理与实战
本文深入剖析了分布式系统中消息队列的四大核心消息类型。普通消息作为基础模型实现异步通信;顺序消息通过分区有序机制保证关键业务流程的顺序性;事务消息基于两阶段提交解决分布式事务问题;定时消息则支持延迟任务执行。文章从原理、实现到应用场景,结合RocketMQ实例代码(包括事务消息与MySQL的整合)进行了全面讲解,并提供了选型对比建议。这四种消息类型各具特点,开发者应根据业务需求在解耦、顺序保证、事务一致性和延迟执行等维度进行合理选择,以构建高性能、高可用的分布式系统。
704 1
|
存储 安全 网络安全
云桌面:云计算桌面
云桌面的定义和核心概念 云桌面是一种通过云计算技术提供的虚拟桌面服务,它允许用户通过网络访问远程服务器上的虚拟机,这些虚拟机为用户提供了一个完整的桌面环境。用户可以像使用本地计算机一样使用云桌面,进行文件编辑、上网浏览、运行应用程序等操作。
1972 68