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条》
135 12
|
2月前
|
Java
java工具:《List集合按照某个属性值又打大小排序》
java工具:《List集合按照某个属性值又打大小排序》
173 3
|
3月前
|
Java
java工具:《Java 8 Stream实战:一行代码搞定集合对象类型转换》
java工具:《Java 8 Stream实战:一行代码搞定集合对象类型转换》
183 6
java工具:《Java 8 Stream实战:一行代码搞定集合对象类型转换》
|
存储 安全 网络安全
云桌面:云计算桌面
云桌面的定义和核心概念 云桌面是一种通过云计算技术提供的虚拟桌面服务,它允许用户通过网络访问远程服务器上的虚拟机,这些虚拟机为用户提供了一个完整的桌面环境。用户可以像使用本地计算机一样使用云桌面,进行文件编辑、上网浏览、运行应用程序等操作。
2004 68
|
Java API Spring
Java - 动态代理机制讲解(Proxy.newProxyInstance)
Java - 动态代理机制讲解(Proxy.newProxyInstance)
1849 0
|
设计模式 人工智能 安全
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)`。
581 32
AQS:Java 中悲观锁的底层实现机制
List中根据某个实体的属性去重或者排序
List中根据某个实体的属性去重或者排序
476 0
|
存储 算法 Java
Java-数据结构(二)-Map:HashMap、TreeMap、LinkedHashMap
Java-数据结构(二)-Map:HashMap、TreeMap、LinkedHashMap
706 1
|
Java 区块链 网络架构
酷阿鲸森林农场:Java 区块链系统中的 P2P 区块同步与节点自动加入机制
本文介绍了基于 Java 的去中心化区块链电商系统设计与实现,重点探讨了 P2P 网络在酷阿鲸森林农场项目中的应用。通过节点自动发现、区块广播同步及链校验功能,系统实现了无需中心服务器的点对点网络架构。文章详细解析了核心代码逻辑,包括 P2P 服务端监听、客户端广播新区块及节点列表自动获取等环节,并提出了消息签名验证、WebSocket 替代 Socket 等优化方向。该系统不仅适用于农业电商,还可扩展至教育、物流等领域,构建可信数据链条。
|
7月前
|
消息中间件 存储 关系型数据库
消息队列四大核心消息类型深度解析:普通、顺序、事务、定时消息原理与实战
本文深入剖析了分布式系统中消息队列的四大核心消息类型。普通消息作为基础模型实现异步通信;顺序消息通过分区有序机制保证关键业务流程的顺序性;事务消息基于两阶段提交解决分布式事务问题;定时消息则支持延迟任务执行。文章从原理、实现到应用场景,结合RocketMQ实例代码(包括事务消息与MySQL的整合)进行了全面讲解,并提供了选型对比建议。这四种消息类型各具特点,开发者应根据业务需求在解耦、顺序保证、事务一致性和延迟执行等维度进行合理选择,以构建高性能、高可用的分布式系统。
736 1

热门文章

最新文章