本示例使用的json包为阿里的fastjson

首先写三个工具类(seter和geter方法省略,自行补上):

  1. /**
  2. * 屏幕实体类
  3. */
  4. public class Screen {
  5.  
  6. private String resolution; // 分辨率
  7. private String size; // 显存大小
  8.  
  9. }
  1. /**
  2. * 内存条实体类
  3. */
  4. public class Memory {
  5.  
  6. private String size; // 大小
  7. private String brand; // 品牌
  8.  
  9. }
  1. /**
  2. * 电脑实体类
  3. */
  4. public class Computer {
  5.  
  6. private int id; // id
  7. private String brand; // 品牌
  8. private Double price; // 价格
  9. private Screen screen; // 屏幕
  10. private List<Memory> memory; // 内存条
  11.  
  12. }

测试类,直接上代码:

  1. /**
  2. * 测试类
  3. */
  4. public class T01 {
  5.  
  6. public static void main(String[] args) {
  7. // 1. 《自定义对象》转《json》
  8. Computer c1 = getComputer();
  9. JSONObject obj = JSONObject.parseObject(JSONObject.toJSONString(c1));
  10. System.out.println(obj);
  11. System.out.println("---------------------------------------------------------------------------");
  12.  
  13. // 2. 《json》转《自定义对象》
  14. String str = obj.toJSONString();
  15. Computer c2 = JSONObject.parseObject(str, Computer.class);
  16. System.out.println(c2.toString());
  17. System.out.println("---------------------------------------------------------------------------");
  18.  
  19. // 3. 《列表》转《JSONArray》
  20. List<Computer> computers = getList();
  21. JSONArray ja = JSON.parseObject(JSONArray.toJSONString(computers), JSONArray.class);
  22. System.out.println(ja.toJSONString());
  23. System.out.println("---------------------------------------------------------------------------");
  24.  
  25. // 4. 《JSONArray》转《列表》
  26. List<Computer> list = JSONArray.parseArray(ja.toJSONString(), Computer.class);
  27. list.forEach(System.out::println);
  28. System.out.println("---------------------------------------------------------------------------");
  29.  
  30. // 5. 《数组》转《JSONArray》
  31. // 用Arrays的asList方法将数组转换成List,然后按照步骤3转换就可以了
  32. List<Memory> ms = Arrays.asList(new Memory[] { new Memory("8G", "金士顿"), new Memory("4G", "三星") });
  33. ms.forEach(System.out::println);
  34. System.out.println("---------------------------------------------------------------------------");
  35.  
  36. // 6. 《JSONArray》转《数组》
  37. Computer[] cs = new Computer[list.size()];
  38. list.toArray(cs); // 先按照步骤4将JSONArray转成list,再转成数组
  39. for (Computer computer : cs) {
  40. System.out.println(computer);
  41. }
  42. }
  43.  
  44. private static List<Computer> getList() {
  45. List<Memory> ms1 = Arrays.asList(new Memory[] { new Memory("8G", "金士顿"), new Memory("4G", "三星") });
  46. Screen s1 = new Screen("1024*768", "16G");
  47. Computer c1 = new Computer(1, "戴尔", 5678.9, s1, ms1);
  48.  
  49. List<Memory> ms2 = Arrays.asList(new Memory[] { new Memory("16G", "惠普"), new Memory("8G", "森海") });
  50. Screen s2 = new Screen("1024*768", "8G");
  51. Computer c2 = new Computer(2, "联想", 1234.5, s2, ms2);
  52.  
  53. List<Memory> ms3 = Arrays.asList(new Memory[] { new Memory("32G", "联想"), new Memory("8G", "纽曼") });
  54. Screen s3 = new Screen("1024*768", "16G");
  55. Computer c3 = new Computer(3, "苹果", 4567.8, s3, ms3);
  56.  
  57. return Arrays.asList(new Computer[] { c1, c2, c3 });
  58. }
  59.  
  60. private static Computer getComputer() {
  61. List<Memory> ms = Arrays.asList(new Memory[] { new Memory("16G", "金士顿"), new Memory("8G", "三星") });
  62. return new Computer(7, "外星人", 12345.689, new Screen("1024*768", "16G"), ms);
  63. }
  64.  
  65. }

java与json,一篇就够了的更多相关文章

  1. 【java编程】ServiceLoader使用看这一篇就够了

    转载:https://www.jianshu.com/p/7601ba434ff4 想必大家多多少少听过spi,具体的解释我就不多说了.但是它具体是怎么实现的呢?它的原理是什么呢?下面我就围绕这两个问 ...

  2. Java中的多线程=你只要看这一篇就够了

    如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...

  3. Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) JAVA日志的前世今生 .NET MVC采用SignalR更新在线用户数 C#多线程编程系列(五)- 使用任务并行库 C#多线程编程系列(三)- 线程同步 C#多线程编程系列(二)- 线程基础 C#多线程编程系列(一)- 简介

    Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) 一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读,当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅. 一.前言 ...

  4. java高并发系列 - 第23天:JUC中原子类,一篇就够了

    这是java高并发系列第23篇文章,环境:jdk1.8. 本文主要内容 JUC中的原子类介绍 介绍基本类型原子类 介绍数组类型原子类 介绍引用类型原子类 介绍对象属性修改相关原子类 预备知识 JUC中 ...

  5. .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了

    作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/9985451.html 本来这篇只是想简单介绍下ASP.NET Core MVC项目的(毕竟要照顾到很多新 ...

  6. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  7. 《IM开发新手入门一篇就够:从零开发移动端IM》

        登录 立即注册 TCP/IP详解 资讯 动态 社区 技术精选 首页   即时通讯网›专项技术区›IM开发新手入门一篇就够:从零开发移动端IM   帖子 打赏 分享 发表评论162     想开 ...

  8. net core体系-web应用程序-4asp.net core2.0 项目实战(CMS)-第二章 入门篇-快速入门ASP.NET Core看这篇就够了

    .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了   原文链接:https://www.cnblogs.com/yilezhu/p/9985451.ht ...

  9. Java 的 JSON 开源类库选择比较(zz)

    在看了作者的介绍,然后我又到mvnrepository上去看了各个库的的使用数之后,发现只能在jackson和gson之间做选择. 以下是原文 有效选择七个关于Java的JSON开源类库 April  ...

  10. java处理json与对象的转化 递归

    整个类是一个case,总结了我在使用java处理json的时候遇到的问题,还有级联关系的对象如何遍历,json和对象之间的转换! 对于对象json转换中遇到的问题我参考了一篇博客,http://blo ...

随机推荐

  1. 团队-爬虫豆瓣top250项目-模块测试过程

    模块测试: 项目托管平台地址:https://github.com/gengwenhao/GetTop250.git 模块测试:"获取250排名的全部电影信息"功能,测试方法:手动 ...

  2. 常用API String

    Java的API以及Object类 Java的API Java的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JD ...

  3. 使用kbmmw 生成客户端delphi函数原型

    前面我们讲了使用swagger 生成java,php 的客户端调用函数原型. 对于delphi,其实很遗憾,不能直接生成客户端函数原型代码. 不要紧,解铃还须系铃人,既然是kbmmw 自己生成的,我们 ...

  4. JS-MD5加密

    首先,下载MD5文件压缩包 点击下载MD5压缩包 然后,在需要加密的页面引用MD5脚本文件 <script src="js/md5.js" type="text/j ...

  5. HTML标签有序标签和无序标签

    1.<ul>标签定义无序列表,所谓无序,是指以●.○.▽.▲等开头的,没有顺序的列表项目 1.1  设置无序列表的类型—type             无序列表的默认符号是圆点(● ). ...

  6. JAVA常用集合

    List: ArrayList: 基于动态数组的有序集合.优点:可以根据索引index下标访问List中的元素,访问速度快:缺点是访问和修改中间位置的元素时慢(数组尾部插入元素以外). LinkedL ...

  7. sjms-1 面向对象

    面向对象设计 先设计架构,然后去完成相应模块和类 设计模式:对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案.每一个设计模式系统地命名.解释和评价了面向对象系统中一个重要的和重复出现的设计 ...

  8. python-mysql驱动64位

    安装Python-MySQL驱动一直没有成功: https://pypi.python.org/pypi/MySQL-python/1.2.5#downloads 上面网站下的版本安装都不能通过 提示 ...

  9. PID control

    |—平滑化算法 |—PID控制—|—P控制器编程 |—PD控制编程 |—PID控制编程 |—参数优化 |—实验P.PD.PID对减小系统误差的作用 这里讨论怎么将路径转变成行动指令(生成平滑的路径), ...

  10. ubuntu安装spyder和jupyter notebook

    ubuntu安装spyder和jupyter notebook 安装spyder 安装spyder sudo apt install spyder sudo apt install spyder3 安 ...