JSON介绍及解析

一、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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容