java与json,一篇就够了
本示例使用的json包为阿里的fastjson
首先写三个工具类(seter和geter方法省略,自行补上):
/**
* 屏幕实体类
*/
public class Screen { private String resolution; // 分辨率
private String size; // 显存大小 }
/**
* 内存条实体类
*/
public class Memory { private String size; // 大小
private String brand; // 品牌 }
/**
* 电脑实体类
*/
public class Computer { private int id; // id
private String brand; // 品牌
private Double price; // 价格
private Screen screen; // 屏幕
private List<Memory> memory; // 内存条 }
测试类,直接上代码:
/**
* 测试类
*/
public class T01 { public static void main(String[] args) {
// 1. 《自定义对象》转《json》
Computer c1 = getComputer();
JSONObject obj = JSONObject.parseObject(JSONObject.toJSONString(c1));
System.out.println(obj);
System.out.println("---------------------------------------------------------------------------"); // 2. 《json》转《自定义对象》
String str = obj.toJSONString();
Computer c2 = JSONObject.parseObject(str, Computer.class);
System.out.println(c2.toString());
System.out.println("---------------------------------------------------------------------------"); // 3. 《列表》转《JSONArray》
List<Computer> computers = getList();
JSONArray ja = JSON.parseObject(JSONArray.toJSONString(computers), JSONArray.class);
System.out.println(ja.toJSONString());
System.out.println("---------------------------------------------------------------------------"); // 4. 《JSONArray》转《列表》
List<Computer> list = JSONArray.parseArray(ja.toJSONString(), Computer.class);
list.forEach(System.out::println);
System.out.println("---------------------------------------------------------------------------"); // 5. 《数组》转《JSONArray》
// 用Arrays的asList方法将数组转换成List,然后按照步骤3转换就可以了
List<Memory> ms = Arrays.asList(new Memory[] { new Memory("8G", "金士顿"), new Memory("4G", "三星") });
ms.forEach(System.out::println);
System.out.println("---------------------------------------------------------------------------"); // 6. 《JSONArray》转《数组》
Computer[] cs = new Computer[list.size()];
list.toArray(cs); // 先按照步骤4将JSONArray转成list,再转成数组
for (Computer computer : cs) {
System.out.println(computer);
}
} private static List<Computer> getList() {
List<Memory> ms1 = Arrays.asList(new Memory[] { new Memory("8G", "金士顿"), new Memory("4G", "三星") });
Screen s1 = new Screen("1024*768", "16G");
Computer c1 = new Computer(1, "戴尔", 5678.9, s1, ms1); List<Memory> ms2 = Arrays.asList(new Memory[] { new Memory("16G", "惠普"), new Memory("8G", "森海") });
Screen s2 = new Screen("1024*768", "8G");
Computer c2 = new Computer(2, "联想", 1234.5, s2, ms2); List<Memory> ms3 = Arrays.asList(new Memory[] { new Memory("32G", "联想"), new Memory("8G", "纽曼") });
Screen s3 = new Screen("1024*768", "16G");
Computer c3 = new Computer(3, "苹果", 4567.8, s3, ms3); return Arrays.asList(new Computer[] { c1, c2, c3 });
} private static Computer getComputer() {
List<Memory> ms = Arrays.asList(new Memory[] { new Memory("16G", "金士顿"), new Memory("8G", "三星") });
return new Computer(7, "外星人", 12345.689, new Screen("1024*768", "16G"), ms);
} }
java与json,一篇就够了的更多相关文章
- 【java编程】ServiceLoader使用看这一篇就够了
转载:https://www.jianshu.com/p/7601ba434ff4 想必大家多多少少听过spi,具体的解释我就不多说了.但是它具体是怎么实现的呢?它的原理是什么呢?下面我就围绕这两个问 ...
- Java中的多线程=你只要看这一篇就够了
如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...
- Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) JAVA日志的前世今生 .NET MVC采用SignalR更新在线用户数 C#多线程编程系列(五)- 使用任务并行库 C#多线程编程系列(三)- 线程同步 C#多线程编程系列(二)- 线程基础 C#多线程编程系列(一)- 简介
Python GUI之tkinter窗口视窗教程大集合(看这篇就够了) 一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读,当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅. 一.前言 ...
- java高并发系列 - 第23天:JUC中原子类,一篇就够了
这是java高并发系列第23篇文章,环境:jdk1.8. 本文主要内容 JUC中的原子类介绍 介绍基本类型原子类 介绍数组类型原子类 介绍引用类型原子类 介绍对象属性修改相关原子类 预备知识 JUC中 ...
- .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了
作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/9985451.html 本来这篇只是想简单介绍下ASP.NET Core MVC项目的(毕竟要照顾到很多新 ...
- 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 重点: 实现多级子目录的压缩, ...
- 《IM开发新手入门一篇就够:从零开发移动端IM》
登录 立即注册 TCP/IP详解 资讯 动态 社区 技术精选 首页 即时通讯网›专项技术区›IM开发新手入门一篇就够:从零开发移动端IM 帖子 打赏 分享 发表评论162 想开 ...
- 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 ...
- Java 的 JSON 开源类库选择比较(zz)
在看了作者的介绍,然后我又到mvnrepository上去看了各个库的的使用数之后,发现只能在jackson和gson之间做选择. 以下是原文 有效选择七个关于Java的JSON开源类库 April ...
- java处理json与对象的转化 递归
整个类是一个case,总结了我在使用java处理json的时候遇到的问题,还有级联关系的对象如何遍历,json和对象之间的转换! 对于对象json转换中遇到的问题我参考了一篇博客,http://blo ...
随机推荐
- JupyterLab绘制:柱状图,饼状图,直方图,散点图,折线图
JupyterLab绘图 喜欢python的同学,可以到 https://v3u.cn/(刘悦的技术博客) 里面去看看,爬虫,数据库,flask,Django,机器学习,前端知识点,JavaScrip ...
- nodejs + 小程序云函数 生成小程序码
前言:这个东西坑死我了 业务需求要生成小程序码 然后我找了两天的资料 运行 生成一堆的乱码 死活就是不能生成 最后看了一遍博客 套用了一下 自己又简单的改了一下 nodejs 我是刚刚接触 有很多 ...
- JMeter接口压测——ServerAgent监控服务端性能指标
ServerAgent作为一个服务端性能监控插件,结合JMeter自身插件PerfMon可以实现JMeter压测的图形化实时监控,具有良好的实用性.下面讲解一个应用实例 思路: 1. 插件准备 2.打 ...
- 用java实现的英汉词典
import java.io.*; import java.util.*; public class MyDictionary { static private Map<String, Stri ...
- SSH通过密钥登陆
A服务器上操作 ssh-keygen -t rsa/dsa 后面所带参数rsa/dsa为加密方式,默认为dsa [root@localhost ~]# ssh-keygen Generating pu ...
- python set所用后列表不改变里面内容排序
my_list = [1,2,1,54,5,64,4681,4,676] my_list_two = list(set(my_list)) my_list_two.sort(key = my_list ...
- postgresql数据库查询慢SQL
--查询总耗时最长SQLselect * from pg_stat_statements order by total_time desc;--查询平均耗时最长SQLselect * from pg_ ...
- 为什么需要提前撰写Spec文档
Joel on Software(中文名叫<Joel软件随想录>)算得上是一本旧书了,但里面的建议和讨论,真的是历久弥新.特别是,Joel是个有趣.牛逼的家伙:前微软Excel的职员.St ...
- 「ZJOI2019」&「十二省联考 2019」题解索引
「ZJOI2019」&「十二省联考 2019」题解索引 「ZJOI2019」 「ZJOI2019」线段树 「ZJOI2019」Minimax 搜索 「十二省联考 2019」 「十二省联考 20 ...
- 微信小程序消息通知-打卡考勤
微信小程序消息通知-打卡考勤 效果: 稍微改一下js就行,有不必要的错误,我就不改了,哈哈! index.js //index.js const app = getApp() // 填写微信小程序ap ...