Java 语言 ArrayList 和 JSONArray 相互转换

本篇主要讲解 ArrayList 和 fastjson 中的 JSONArray相互转换的几种常用方式,以实体类 Student.java 举例说明。


Student 实体类

/**
* @author Miracle Luna
* @version 1.0
* @date 2019/7/5 18:06
*/
public class Student {
private String name; // 姓名
private Integer age; // 年龄
private String gender; // 性别 public Student(String name, Integer age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public String getGender() {
return gender;
} public void setGender(String gender) {
this.gender = gender;
} @Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
'}';
}
}

ArrayList 转成 JSONArray

简单总结了 6 种 方法(推荐 第5、6种),代码如下:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import java.util.ArrayList; /**
* @author Miracle Luna
* @version 1.0
* @date 2019/7/5 17:43
*/
public class ArrayListToJSONArray {
public static void main(String[] args) {
ArrayList<Student> studentList = new ArrayList<Student>();
JSONArray studentJsonArray = new JSONArray(); Student John = new Student("John", 16,"boy");
Student Lily = new Student("Lily", 17, "girl");
Student Jack = new Student("Jack", 18, "boy"); studentList.add(John);
studentList.add(Lily);
studentList.add(Jack); System.out.println("=============== studentList info ================");
System.out.println(studentList.toString()); // 方式 1
studentJsonArray = JSON.parseArray(JSONObject.toJSONString(studentList));
System.out.println("\n方式 1: " + studentJsonArray.toJSONString()); // 方式 2
studentJsonArray = JSON.parseArray(JSON.toJSONString(studentList));
System.out.println("\n方式 2: " + studentJsonArray.toJSONString()); // 方式 3
studentJsonArray = JSONObject.parseArray(JSONObject.toJSONString(studentList));
System.out.println("\n方式 3: " + studentJsonArray.toJSONString()); // 方式 4
studentJsonArray = JSONObject.parseArray(JSON.toJSONString(studentList));
System.out.println("\n方式 4: " + studentJsonArray.toJSONString()); // 方式 5
studentJsonArray = JSONArray.parseArray(JSONObject.toJSONString(studentList));
System.out.println("\n方式 5: " + studentJsonArray.toJSONString()); // 方式 6
studentJsonArray = JSONArray.parseArray(JSON.toJSONString(studentList));
System.out.println("\n方式 6: " + studentJsonArray.toJSONString()); System.out.println("\n============== Lambda 表达式 遍历 JSONArray ============");
studentJsonArray.forEach(student -> System.out.println("student info: " + student));
}
}

执行结果如下:

=============== studentList info ================
[Student{name='John', age=16, gender='boy'}, Student{name='Lily', age=17, gender='girl'}, Student{name='Jack', age=18, gender='boy'}] 方式 1: [{"gender":"boy","name":"John","age":16},{"gender":"girl","name":"Lily","age":17},{"gender":"boy","name":"Jack","age":18}] 方式 2: [{"gender":"boy","name":"John","age":16},{"gender":"girl","name":"Lily","age":17},{"gender":"boy","name":"Jack","age":18}] 方式 3: [{"gender":"boy","name":"John","age":16},{"gender":"girl","name":"Lily","age":17},{"gender":"boy","name":"Jack","age":18}] 方式 4: [{"gender":"boy","name":"John","age":16},{"gender":"girl","name":"Lily","age":17},{"gender":"boy","name":"Jack","age":18}] 方式 5: [{"gender":"boy","name":"John","age":16},{"gender":"girl","name":"Lily","age":17},{"gender":"boy","name":"Jack","age":18}] 方式 6: [{"gender":"boy","name":"John","age":16},{"gender":"girl","name":"Lily","age":17},{"gender":"boy","name":"Jack","age":18}] ============== Lambda 表达式 遍历 JSONArray ============
student info: {"gender":"boy","name":"John","age":16}
student info: {"gender":"girl","name":"Lily","age":17}
student info: {"gender":"boy","name":"Jack","age":18}

JSONArray 转成 ArrayList

简单总结了 7 种 方法(推荐前 4种),代码如下:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import java.util.*; /**
* @author Miracle Luna
* @version 1.0
* @date 2019/7/5 18:36
*/
public class JSONArrayToArrayList {
public static void main(String[] args) {
JSONArray studentJSONArray = new JSONArray();
List<Student> studentList = new ArrayList<Student>(); Map<String, Object> JohnMap = new HashMap<String, Object>();
JohnMap.put("name", "John");
JohnMap.put("age", 16);
JohnMap.put("gender", "boy");
JSONObject John = new JSONObject(JohnMap); Map<String, Object> LilyMap = new HashMap<String, Object>();
LilyMap.put("name", "Lily");
LilyMap.put("age", 17);
LilyMap.put("gender", "girl");
JSONObject Lily = new JSONObject(LilyMap); Map<String, Object> JackMap = new HashMap<String, Object>();
JackMap.put("name", "Jack");
JackMap.put("age", 18);
JackMap.put("gender", "boy");
JSONObject Jack = new JSONObject(JackMap); studentJSONArray.add(John);
studentJSONArray.add(Lily);
studentJSONArray.add(Jack); System.out.println("\n=============== studentJSONArray info ================");
System.out.println(studentJSONArray); System.out.println("\n=============== JSONArray to ArrayList(方式 1) ================");
studentList = studentJSONArray.toJavaList(Student.class);
studentList.forEach(student -> System.out.println("stundet info: " + student)); System.out.println("\n=============== JSONArray to ArrayList(方式 2) ================");
studentList = JSON.parseArray(studentJSONArray.toJSONString(), Student.class);
studentList.forEach(student -> System.out.println("stundet info: " + student)); System.out.println("\n=============== JSONArray to ArrayList(方式 3) ================");
studentList = JSONObject.parseArray(studentJSONArray.toJSONString(), Student.class);
studentList.forEach(student -> System.out.println("stundet info: " + student)); System.out.println("\n=============== JSONArray to ArrayList(方式 4) ================");
studentList = JSONArray.parseArray(studentJSONArray.toJSONString(), Student.class);
studentList.forEach(student -> System.out.println("stundet info: " + student)); System.out.println("\n=============== JSONArray to ArrayList(方式 5) ================");
final ArrayList<Student> tmpList = new ArrayList<Student>();
studentJSONArray.forEach(studentJson -> {
JSONObject jsonObject = (JSONObject)studentJson;
Student student = new Student(jsonObject.getString("name"), jsonObject.getInteger("age"), jsonObject.getString("gender"));
tmpList.add(student);
}); studentList = tmpList;
studentList.forEach(student -> System.out.println("stundet info: " + student)); System.out.println("\n=============== JSONArray to ArrayList(方式 6) ================");
studentList.clear();
for (Object object : studentJSONArray) {
JSONObject jsonObject = (JSONObject)object;
Student student = new Student(jsonObject.getString("name"), jsonObject.getInteger("age"), jsonObject.getString("gender"));
studentList.add(student);
}
studentList.forEach(student -> System.out.println("stundet info: " + student)); System.out.println("\n=============== JSONArray to ArrayList(方式 7) ================");
studentList.clear();
for (int i = 0; i < studentJSONArray.size(); i++) {
JSONObject jsonObject = (JSONObject)studentJSONArray.get(i);
Student student = new Student(jsonObject.getString("name"), jsonObject.getInteger("age"), jsonObject.getString("gender"));
studentList.add(student);
}
studentList.forEach(student -> System.out.println("stundet info: " + student));
}
}

执行结果如下:

=============== studentJSONArray info ================
[{"gender":"boy","name":"John","age":16},{"gender":"girl","name":"Lily","age":17},{"gender":"boy","name":"Jack","age":18}] =============== JSONArray to ArrayList(方式 1) ================
stundet info: Student{name='John', age=16, gender='boy'}
stundet info: Student{name='Lily', age=17, gender='girl'}
stundet info: Student{name='Jack', age=18, gender='boy'} =============== JSONArray to ArrayList(方式 2) ================
stundet info: Student{name='John', age=16, gender='boy'}
stundet info: Student{name='Lily', age=17, gender='girl'}
stundet info: Student{name='Jack', age=18, gender='boy'} =============== JSONArray to ArrayList(方式 3) ================
stundet info: Student{name='John', age=16, gender='boy'}
stundet info: Student{name='Lily', age=17, gender='girl'}
stundet info: Student{name='Jack', age=18, gender='boy'} =============== JSONArray to ArrayList(方式 4) ================
stundet info: Student{name='John', age=16, gender='boy'}
stundet info: Student{name='Lily', age=17, gender='girl'}
stundet info: Student{name='Jack', age=18, gender='boy'} =============== JSONArray to ArrayList(方式 5) ================
stundet info: Student{name='John', age=16, gender='boy'}
stundet info: Student{name='Lily', age=17, gender='girl'}
stundet info: Student{name='Jack', age=18, gender='boy'} =============== JSONArray to ArrayList(方式 6) ================
stundet info: Student{name='John', age=16, gender='boy'}
stundet info: Student{name='Lily', age=17, gender='girl'}
stundet info: Student{name='Jack', age=18, gender='boy'} =============== JSONArray to ArrayList(方式 7) ================
stundet info: Student{name='John', age=16, gender='boy'}
stundet info: Student{name='Lily', age=17, gender='girl'}
stundet info: Student{name='Jack', age=18, gender='boy'}

Java 语言 ArrayList 和 JSONArray 相互转换的更多相关文章

  1. Java语言 List 和 Array 相互转换

    Java语言 List 和 Array 相互转换 List集合 转换为 Array数组 List集合 转换成 Array数组,有 2 种方式,代码如下: import java.util.ArrayL ...

  2. Java ArrayList 数组之间相互转换

    做研发的朋友都知道,在项目开发中经常会碰到list与数组类型之间的相互转换,本文通过一个简单的例子给大家讲解具有转换过程. package test.test1; import java.util.A ...

  3. JAVA语言搭建白盒静态代码、黑盒网站插件式自动化安全审计平台

    近期打算做一个插件化的白盒静态代码安全审计自动化平台和黑盒网站安全审计自动化平台.现在开源或半开源做黑盒网站安全扫描的平台,大多是基于python脚本,安全人员贡献python脚本插件增强平台功能.对 ...

  4. 瘋耔java语言笔记

    一◐ java概述                                                                                        1.1 ...

  5. 初涉java库--ArrayList

    我的车就差一个轮子啦,造好轮子,我就飞上天与太阳肩并肩啦,想想都激动.什么你要自己造轮子,是不是傻,商店里不都是别人造好的吗,又好又方便,只需一点money,你没有money,那你只能做个安静的美男子 ...

  6. 用java语言实现事件委托模式

    http://blog.csdn.net/yanshujun/article/details/6494447 用java语言实现事件委托模式 2010-04-27 00:04 2206人阅读 评论(1 ...

  7. Java语言速览:StackOverflow

    关于 java Java(请不要与 JavaScript 搞混)是一种设计为与 Java 虚拟机 (JVM) 一起使用的多用途编程语言.一般将安装了相关工具可以开发并运行 Java 程序的电脑系统称为 ...

  8. Java语言与JVM中的Lambda表达式全解

    Lambda表达式是自Java SE 5引入泛型以来最重大的Java语言新特性,本文是2012年度最后一期Java Magazine中的一篇文章,它介绍了Lamdba的设计初衷,应用场景与基本语法. ...

  9. Java 语言的 XPath API

    如果要告诉别人买一加仑牛奶,您会怎么说?"请去买一加仑牛奶回来" 还是 "从前门出去,向左转,走三个街区向右转,再走半个街区向右转进入商店.走向四号通道,沿通道走五米向左 ...

随机推荐

  1. c++ ros 计算两点距离

    #include <iostream> /* puts, printf */ #include <time.h> /* time_t, struct tm, time, loc ...

  2. mysql5.7 源码安装步骤

    操作系统:centos 7 mysql版本:5.7  下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-gli ...

  3. hadoop(10)---hdfs配置文件详解

    以下只是简单的对hdfs(hdfs.site.xml)配置文件做一个简单的说明. <configuration><property><!-- 为namenode集群定义一 ...

  4. 4.linux vim 编辑器的基本操作

    一.vim编辑器基本操作       1.vim 编辑器 :  三种工作模式                              命令模式           a.i.o             ...

  5. MyBatis 与 Hibernate

    MyBatis 是一个优秀的基于 Java 的持久层框架,它内部封装了 JDBC,使开发者只需关注 SQL 语句本身,而不用再花费精力去处理诸如注册驱动.创建 Connection.配置 Statem ...

  6. protobuf protocol-buffers 序列化数据 gobs pickling string XML 用C实现的cPickle比pickle快1000倍 protobuf2 protobuf3 差异

    场景: 浏览器请求--->python数据生成--->python-生成excel--->浏览器下载excel 目标: 重构为 浏览器请求--->python数据生成---&g ...

  7. linux内核中IS_ALIGNED是如何定义的?

    1. 定义如下: (include/linux/kernel.h) #define IS_ALIGNED(x, a)                (((x) & ((typeof(x))(a ...

  8. angular组件数据和事件

    <h1>引入图片</h1> <img src="assets/images/02.png" alt="收藏" /> < ...

  9. JDK目录详解

    bin目录: 该目录用于存放一些可执行程序. 如javac.exe(java编译器).java.exe(java运行工具),jar.exe(打包工具)和* javadoc.exe(文档生成工具)等. ...

  10. sppNet论文学习

    Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 深度神经网络中用于视觉识别的空间金字塔池化 ...