Java 语言 ArrayList 和 JSONArray 相互转换

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


Student 实体类

  1. /**
  2. * @author Miracle Luna
  3. * @version 1.0
  4. * @date 2019/7/5 18:06
  5. */
  6. public class Student {
  7. private String name; // 姓名
  8. private Integer age; // 年龄
  9. private String gender; // 性别
  10.  
  11. public Student(String name, Integer age, String gender) {
  12. this.name = name;
  13. this.age = age;
  14. this.gender = gender;
  15. }
  16.  
  17. public String getName() {
  18. return name;
  19. }
  20.  
  21. public void setName(String name) {
  22. this.name = name;
  23. }
  24.  
  25. public Integer getAge() {
  26. return age;
  27. }
  28.  
  29. public void setAge(Integer age) {
  30. this.age = age;
  31. }
  32.  
  33. public String getGender() {
  34. return gender;
  35. }
  36.  
  37. public void setGender(String gender) {
  38. this.gender = gender;
  39. }
  40.  
  41. @Override
  42. public String toString() {
  43. return "Student{" +
  44. "name='" + name + '\'' +
  45. ", age=" + age +
  46. ", gender='" + gender + '\'' +
  47. '}';
  48. }
  49. }

ArrayList 转成 JSONArray

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

  1. import com.alibaba.fastjson.JSON;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4.  
  5. import java.util.ArrayList;
  6.  
  7. /**
  8. * @author Miracle Luna
  9. * @version 1.0
  10. * @date 2019/7/5 17:43
  11. */
  12. public class ArrayListToJSONArray {
  13. public static void main(String[] args) {
  14. ArrayList<Student> studentList = new ArrayList<Student>();
  15. JSONArray studentJsonArray = new JSONArray();
  16.  
  17. Student John = new Student("John", 16,"boy");
  18. Student Lily = new Student("Lily", 17, "girl");
  19. Student Jack = new Student("Jack", 18, "boy");
  20.  
  21. studentList.add(John);
  22. studentList.add(Lily);
  23. studentList.add(Jack);
  24.  
  25. System.out.println("=============== studentList info ================");
  26. System.out.println(studentList.toString());
  27.  
  28. // 方式 1
  29. studentJsonArray = JSON.parseArray(JSONObject.toJSONString(studentList));
  30. System.out.println("\n方式 1: " + studentJsonArray.toJSONString());
  31.  
  32. // 方式 2
  33. studentJsonArray = JSON.parseArray(JSON.toJSONString(studentList));
  34. System.out.println("\n方式 2: " + studentJsonArray.toJSONString());
  35.  
  36. // 方式 3
  37. studentJsonArray = JSONObject.parseArray(JSONObject.toJSONString(studentList));
  38. System.out.println("\n方式 3: " + studentJsonArray.toJSONString());
  39.  
  40. // 方式 4
  41. studentJsonArray = JSONObject.parseArray(JSON.toJSONString(studentList));
  42. System.out.println("\n方式 4: " + studentJsonArray.toJSONString());
  43.  
  44. // 方式 5
  45. studentJsonArray = JSONArray.parseArray(JSONObject.toJSONString(studentList));
  46. System.out.println("\n方式 5: " + studentJsonArray.toJSONString());
  47.  
  48. // 方式 6
  49. studentJsonArray = JSONArray.parseArray(JSON.toJSONString(studentList));
  50. System.out.println("\n方式 6: " + studentJsonArray.toJSONString());
  51.  
  52. System.out.println("\n============== Lambda 表达式 遍历 JSONArray ============");
  53. studentJsonArray.forEach(student -> System.out.println("student info: " + student));
  54. }
  55. }

执行结果如下:

  1. =============== studentList info ================
  2. [Student{name='John', age=16, gender='boy'}, Student{name='Lily', age=17, gender='girl'}, Student{name='Jack', age=18, gender='boy'}]
  3.  
  4. 方式 1: [{"gender":"boy","name":"John","age":16},{"gender":"girl","name":"Lily","age":17},{"gender":"boy","name":"Jack","age":18}]
  5.  
  6. 方式 2: [{"gender":"boy","name":"John","age":16},{"gender":"girl","name":"Lily","age":17},{"gender":"boy","name":"Jack","age":18}]
  7.  
  8. 方式 3: [{"gender":"boy","name":"John","age":16},{"gender":"girl","name":"Lily","age":17},{"gender":"boy","name":"Jack","age":18}]
  9.  
  10. 方式 4: [{"gender":"boy","name":"John","age":16},{"gender":"girl","name":"Lily","age":17},{"gender":"boy","name":"Jack","age":18}]
  11.  
  12. 方式 5: [{"gender":"boy","name":"John","age":16},{"gender":"girl","name":"Lily","age":17},{"gender":"boy","name":"Jack","age":18}]
  13.  
  14. 方式 6: [{"gender":"boy","name":"John","age":16},{"gender":"girl","name":"Lily","age":17},{"gender":"boy","name":"Jack","age":18}]
  15.  
  16. ============== Lambda 表达式 遍历 JSONArray ============
  17. student info: {"gender":"boy","name":"John","age":16}
  18. student info: {"gender":"girl","name":"Lily","age":17}
  19. student info: {"gender":"boy","name":"Jack","age":18}

JSONArray 转成 ArrayList

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

  1. import com.alibaba.fastjson.JSON;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4.  
  5. import java.util.*;
  6.  
  7. /**
  8. * @author Miracle Luna
  9. * @version 1.0
  10. * @date 2019/7/5 18:36
  11. */
  12. public class JSONArrayToArrayList {
  13. public static void main(String[] args) {
  14. JSONArray studentJSONArray = new JSONArray();
  15. List<Student> studentList = new ArrayList<Student>();
  16.  
  17. Map<String, Object> JohnMap = new HashMap<String, Object>();
  18. JohnMap.put("name", "John");
  19. JohnMap.put("age", 16);
  20. JohnMap.put("gender", "boy");
  21. JSONObject John = new JSONObject(JohnMap);
  22.  
  23. Map<String, Object> LilyMap = new HashMap<String, Object>();
  24. LilyMap.put("name", "Lily");
  25. LilyMap.put("age", 17);
  26. LilyMap.put("gender", "girl");
  27. JSONObject Lily = new JSONObject(LilyMap);
  28.  
  29. Map<String, Object> JackMap = new HashMap<String, Object>();
  30. JackMap.put("name", "Jack");
  31. JackMap.put("age", 18);
  32. JackMap.put("gender", "boy");
  33. JSONObject Jack = new JSONObject(JackMap);
  34.  
  35. studentJSONArray.add(John);
  36. studentJSONArray.add(Lily);
  37. studentJSONArray.add(Jack);
  38.  
  39. System.out.println("\n=============== studentJSONArray info ================");
  40. System.out.println(studentJSONArray);
  41.  
  42. System.out.println("\n=============== JSONArray to ArrayList(方式 1) ================");
  43. studentList = studentJSONArray.toJavaList(Student.class);
  44. studentList.forEach(student -> System.out.println("stundet info: " + student));
  45.  
  46. System.out.println("\n=============== JSONArray to ArrayList(方式 2) ================");
  47. studentList = JSON.parseArray(studentJSONArray.toJSONString(), Student.class);
  48. studentList.forEach(student -> System.out.println("stundet info: " + student));
  49.  
  50. System.out.println("\n=============== JSONArray to ArrayList(方式 3) ================");
  51. studentList = JSONObject.parseArray(studentJSONArray.toJSONString(), Student.class);
  52. studentList.forEach(student -> System.out.println("stundet info: " + student));
  53.  
  54. System.out.println("\n=============== JSONArray to ArrayList(方式 4) ================");
  55. studentList = JSONArray.parseArray(studentJSONArray.toJSONString(), Student.class);
  56. studentList.forEach(student -> System.out.println("stundet info: " + student));
  57.  
  58. System.out.println("\n=============== JSONArray to ArrayList(方式 5) ================");
  59. final ArrayList<Student> tmpList = new ArrayList<Student>();
  60. studentJSONArray.forEach(studentJson -> {
  61. JSONObject jsonObject = (JSONObject)studentJson;
  62. Student student = new Student(jsonObject.getString("name"), jsonObject.getInteger("age"), jsonObject.getString("gender"));
  63. tmpList.add(student);
  64. });
  65.  
  66. studentList = tmpList;
  67. studentList.forEach(student -> System.out.println("stundet info: " + student));
  68.  
  69. System.out.println("\n=============== JSONArray to ArrayList(方式 6) ================");
  70. studentList.clear();
  71. for (Object object : studentJSONArray) {
  72. JSONObject jsonObject = (JSONObject)object;
  73. Student student = new Student(jsonObject.getString("name"), jsonObject.getInteger("age"), jsonObject.getString("gender"));
  74. studentList.add(student);
  75. }
  76. studentList.forEach(student -> System.out.println("stundet info: " + student));
  77.  
  78. System.out.println("\n=============== JSONArray to ArrayList(方式 7) ================");
  79. studentList.clear();
  80. for (int i = 0; i < studentJSONArray.size(); i++) {
  81. JSONObject jsonObject = (JSONObject)studentJSONArray.get(i);
  82. Student student = new Student(jsonObject.getString("name"), jsonObject.getInteger("age"), jsonObject.getString("gender"));
  83. studentList.add(student);
  84. }
  85. studentList.forEach(student -> System.out.println("stundet info: " + student));
  86. }
  87. }

执行结果如下:

  1. =============== studentJSONArray info ================
  2. [{"gender":"boy","name":"John","age":16},{"gender":"girl","name":"Lily","age":17},{"gender":"boy","name":"Jack","age":18}]
  3.  
  4. =============== JSONArray to ArrayList(方式 1) ================
  5. stundet info: Student{name='John', age=16, gender='boy'}
  6. stundet info: Student{name='Lily', age=17, gender='girl'}
  7. stundet info: Student{name='Jack', age=18, gender='boy'}
  8.  
  9. =============== JSONArray to ArrayList(方式 2) ================
  10. stundet info: Student{name='John', age=16, gender='boy'}
  11. stundet info: Student{name='Lily', age=17, gender='girl'}
  12. stundet info: Student{name='Jack', age=18, gender='boy'}
  13.  
  14. =============== JSONArray to ArrayList(方式 3) ================
  15. stundet info: Student{name='John', age=16, gender='boy'}
  16. stundet info: Student{name='Lily', age=17, gender='girl'}
  17. stundet info: Student{name='Jack', age=18, gender='boy'}
  18.  
  19. =============== JSONArray to ArrayList(方式 4) ================
  20. stundet info: Student{name='John', age=16, gender='boy'}
  21. stundet info: Student{name='Lily', age=17, gender='girl'}
  22. stundet info: Student{name='Jack', age=18, gender='boy'}
  23.  
  24. =============== JSONArray to ArrayList(方式 5) ================
  25. stundet info: Student{name='John', age=16, gender='boy'}
  26. stundet info: Student{name='Lily', age=17, gender='girl'}
  27. stundet info: Student{name='Jack', age=18, gender='boy'}
  28.  
  29. =============== JSONArray to ArrayList(方式 6) ================
  30. stundet info: Student{name='John', age=16, gender='boy'}
  31. stundet info: Student{name='Lily', age=17, gender='girl'}
  32. stundet info: Student{name='Jack', age=18, gender='boy'}
  33.  
  34. =============== JSONArray to ArrayList(方式 7) ================
  35. stundet info: Student{name='John', age=16, gender='boy'}
  36. stundet info: Student{name='Lily', age=17, gender='girl'}
  37. 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. nodejs+supertest+mocha 接口测试环境搭建

    系统接口自动化测试 该框架用于对系统的接口自动化测试(nodejs+supertest+mocha)Homebrew 安装: ruby -e "$(curl -fsSL {+}https:/ ...

  2. 解决ubuntu14.04 启动时卡在 Waiting for network configuration...

    两种解决方法: 1.把/etc/network/interfaces中没有用到的配置删除掉 2.把 /etc/init/failsafe.conf 文件中的 sleep 40, sleep 59 注释 ...

  3. WPF中打开网页的两种方法

    1.浏览器打开 Process proc = new System.Diagnostics.Process(); proc.StartInfo.FileName = "http://www. ...

  4. Hadoop(4)MapReduce 任务的推测(speculative)执行

    Straggle(掉队者)是指那些跑的很慢但最终会成功完成的任务.一个掉队的Map任务会阻止Reduce任务开始执行. Hadoop不能自动纠正掉队任务,但是可以识别那些跑的比较慢的任务,然后它会产生 ...

  5. phpmyadmin个版本漏洞

    phpMyadmin各版本漏洞 一: 影响版本:3.5.x < 3.5.8.1 and 4.0.0 < 4.0.0-rc3 ANYUN.ORG 概述:PhpMyAdmin存在PREGREP ...

  6. 说出Servlet的生命周期,并说出Servlet和CGI的区别。

    说出Servlet的生命周期,并说出Servlet和CGI的区别. 山治ZHrx5 | 浏览 1377 次 推荐于2016-09-16 22:39:19 最佳答案 Servlet的生命周期分为5个阶段 ...

  7. win7下如何根据端口号杀掉进程

    点击windows左下窗口图标按钮.   输入cmd   输入netstat -ano后回车.   左边箭头指向端口号,右边箭头指向为这个端口号对应的进程号pid,我们记下pid号   我们以2001 ...

  8. 2018-2019-2 20165114《网络对抗技术》 Exp 8 Web基础

    Exp 8 Web基础 目录 一.实验内容 二.基础问题回答 (1)什么是表单 (2)浏览器可以解析运行什么语言. (3)WebServer支持哪些动态语言 三.实践过程记录 3.1Web前端HTML ...

  9. 2018-2019-2 20165312《网络攻防技术》Exp7 网络欺诈防范

    2018-2019-2 20165312<网络攻防技术>Exp7 网络欺诈防范 目录 一.相关知识点总结 二.实验内容 三.实验步骤 四.实验总结及问题回答 五.实验中遇到的问题及解决方法 ...

  10. [游戏开发]LÖVE2D(1):引擎介绍

    什么是LÖVE引擎 Love引擎是一个非常棒的框架,你可以用来在Lua制作2D游戏.它是免费的,开源的,适用于Windows,Mac OS X,Linux,Android和iOS. 怎么安装 在官网下 ...