一、JSON介绍
1.简介
JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式
轻量级:客户端与服务器 程序与程序 在数据交换时的一种格式
JSON是JS 规范的子集 采用完全独立于编程语言 的文本格式 来存储和表示数据
用文本表示数据
2. 优点:
JSON格式 程序员解析 简单 机器解析 效率快
传输速度提高 JSON表示数据占空间更小
3. JSON格式:
{
"name":"金苹果",
"info":"种苹果"
}
说明:
一个对象, 由一个大括号表示. 例如{} 就是一个对象
大括号中 描述对象的属性 . 通过键值对来描述对象的属性 (可以理解为, 大括号中, 包含的是一个个的键值对.)
格式:
键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.
键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解析.)
键值对的值, 可以是JS中的任意类型的数据
注意:
键就是属性名称 用双引号
值如果是数字 布尔类型可以不用双引号 字符串必须要用双引号引住
值可以是 字符串 数字 布尔 数组 对象
对象里的一个值 可以是数组或对象 复杂点还可以是数组里再套对象数组需要用[] 中括号
例如,数组格式:
在JSON格式中可以与对象互相嵌套 [元素1,元素2...])
4. 其他
JSON格式解析快 但是无限制的嵌套 如果特别长比较难理解(API平台 如京东万象)
层级复杂 可以利用JSON解析平台 JSON视图 把代码粘在JSON数据上 点击视图 可以展开
二、JSON 解析
常用JSON 解析工具: 谷歌Gson 和阿里FastJson
以上二者均为开源库 :打开Github开源地址--> 搜索Gson --> 打开Github开源地址--> 下载最新的JAR文件
通过这两种解析方式来从一段JSON格式的数据中取出里面我们想要的数据
快速把java中的对象编程一个JSON格式的字符串
1. Gson
1.1 将对象转换为JSON字符串
转换JSON字符串的步骤:
1. 引入JAR包
2. 在需要转换JSON字符串的位置编写如下代码即可:
String json = new Gson().toJSON(要转换的对象);
1.2 将JSON字符串转换为对象
1. 引入JAR包
2. 在需要转换Java对象的位置, 编写如下代码:
对象 = new Gson().fromJson(JSON字符串,对象类型.class);
练习如下:
Demo1----Book 对象就变成了一个JSON格式

得到结果:

改进 匿名对象 把原先的g 换成new Gson()

Demo2----把文字转回对象

结果:100
Demo3----转集合
HashMap

增加一个键值对 这个键值对的键 仍是字符串 但是值是一个数组
"page":["锄禾日当午","汗滴禾下土","美好的时光"]

最后一行改为:
System.out.println(data.get("page").getClass());

获取这个 : Object page = data.get("page");
强转List : List page = (List) data.get("page");
获取 1 下标

这样 就把复杂对象通过简单方式 解析。
把一个字符串解析出里面任意内容,也可以把一个对象转成字符串。
2. FastJson
2.1 将对象转换为JSON字符串
转换JSON字符串的步骤:
1. 引入JAR包
2. 在需要转换JSON字符串的位置编写如下代码即可:
String json=JSON.toJSONString(要转换的对象);
2.2 将JSON字符串转换为对象
步骤:
1. 引入JAR包
2. 在需要转换Java对象的位置, 编写如下代码:
类型 对象名=JSON.parseObject(JSON字符串, 类型.class);
或
List list=JSON.parseArray(JSON字符串,类型.class);
练习如下:
Demo4----对象转换为JSON字符串


转对象和转数组是不一样的
Demo5----转对象
JSON.parseObject 第二个参数是 BOOK.class

结果:1002
Demo6----转数组
转成String类型的集合 JSON.parseArray 第二个参数是String.class
