文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、JSON是什么?
- JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
- JSON 是轻量级的文本数据交换格式
- JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
- JSON 具有自我描述性,更易理解
与XML相同之处
- JSON 是纯文本
- JSON 具有"自我描述性"(人类可读)
- JSON 具有层级结构(值中存在值)
- JSON 可通过 JavaScript 进行解析
- JSON 数据可使用 AJAX 进行传输
与 XML 不同之处
- 没有结束标签
- 更短
- 读写的速度更快
- 能够使用内建的 JavaScript eval() 方法进行解析
- 使用数组
- 不使用保留字
为什么使用JSON
对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:
使用 XML
- 读取 XML 文档
- 使用 XML DOM 来循环遍历文档
- 读取值并存储在变量中
使用 JSON
- 读取 JSON 字符串
- 用 eval() 处理 JSON 字符串
二、JSON格式
文本
一本书
书名
简介
JAVA
class Book{
private String name;
private String info;
......
...
}
Book b = new Book("人生","路遥....");
......
JavaScript
var b = new object();
b.name = "人生";
b.info = "路遥......";
XML
<book>
<name>人生</name>
<info>路遥......</info>
</book>
JSON
一个对象由一个大括号表示,括号中描述对象的属性,通过键值对来描述对象的属性(可以理解为:大括号中,包含的是一个个的键值对.)
格式:
- 键与值之间使用冒号连接,多个键值对之间使用逗号分隔;
- 键值对的键,应该使用引号引住(通常Java解析时,键不使用引号会报错,而JS能正常解析)
- 键值对的值,可以是JS中的任意类型的数据
{
"name":"人生"
"info":"路遥......"
}
数组格式:
在JSON格式中可以与对象互相嵌套
[元素 1,元素 2 ...]
案例:
{
"name":"张麻子"
"age":18
"pengyou":["黄老爷","县长","张探长",{
"name":"美金",
"info":"刀了到了,黄老爷到了"
}],
}
三、JAVA 与JSON
将Java中的对象 ,快速地转换为JSON格式的字符串
将JSON 格式的字符串,转换为Java的对象
Gson
Google Gson是一个简单的基于Java的库,用于将Java对象序列化为JSON,也可以把JSON转换为Java对象。它是Google开发的开源库。
- 将对象转换为json字符串
转换JSON字符串的步骤:
1. 引入JAR包
2. 在需要转换JSON字符串的位置编写如下代码即可:
String json = new Gson().toJson( 要转换的对象 );
案例:
//1. 创建Gson对象
Gson g = new Gson();
Book book = new Book("1002","唐诗三百首","窗前明月光~~~");
//2. 转换
String s = g.toJson(book);
//String s = new Gson().toJson(book);
System.out.println(s);
输出结果:
{"id":"1002","name":"唐诗三百首","info":"窗前明月光~~~"}
- 将json字符串转换为对象
1. 引入JAR包
2. 在需要转换JSON字符串的位置编写如下代码即可:
对象 = new Gson().fromJson(JSON字符串,对象类型.class);
案例:
//1. 创建Gson对象
Gson g = new Gson();
//这里对象类型为HashMap
HashMap data = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"一起来种苹果\",\"page\":[\"锄禾日当午\",\"汗滴禾下土\",\"谁知盘中餐\"]}", HashMap.class);
List page = (List) data.get("page");
System.out.println(page.get(1));
输出结果:
锄禾日当午
FastJson
- 将对象转换为json字符串
转换JSON字符串的步骤:
1. 引入JAR包
2. 在需要转换JSON字符串的位置编写如下代码即可:
String json = JSON.toJSONString( 要转换的对象 );
案例:
Book book = new Book("1002","唐诗三百首","窗前明月光~~~");
// 转换
String json = JSON.toJSONString(book);
System.out.println(json);
运行结果:
{"id":"1002","info":"窗前明月光~~~","name":"唐诗三百首"}
- 将json字符串转换为对象
1. 引入JAR包
2. 在需要转换JSON字符串的位置编写如下代码即可:
类型 对象名 = JSON.parseObject(JSON字符串,类型.class);
或
List<类型> list = JSON.parseArray(JSON字符串,类型.class);
案例:
String json = "{\"id\":\"1002\",\"info\":\"窗前明月光~~~\",\"name\":\"唐诗三百首\"}";
Book book = JSON.parseObject(json, Book.class);
System.out.println(book.getId());
运行结果:
Book{id='1002', name='唐诗三百首', info='窗前明月光~~~'}
案例2:
//1. 转换 :["一二三","三四五","四五六"]
List<String> list = JSON.parseArray("[\"一二三\",\"三四五\",\"四五六\"]",String.class);
System.out.println(list.get(1));
运行结果:
三四五
END
JSON技术需要重点掌握哦!