JSON
JSON
JSON是什么
JSON:JavaScript Object Notation(JavaScript 对象表示法)
JSON和XML类似,是用来存储和交换文本信息的。
JSON相较于XML而言,体积更小,更快,更加容易解析。
JSON和XML相同点
- JSON是纯文本
- JSON具有自我描述性
- JSON具有层析结构(值里面可以继续存值)
- JSON 可通过 JavaScript 进行解析
- JSON 数据可使用 AJAX 进行传输
JSON和XML不同点
- 更加短小,简洁
- 没有结束标签
- 读写的速度更快
- 可以使用数组
- 能够使用内建的 JavaScript eval() 方法进行解析
JSON的语法格式
- 数据是键/值对的形式
- 数据间用逗号隔开
- 大括号保存对象
- 中括号保存数组
(1)常见的对象格式
// java
class Student{
private String name;
private int age;
get/set...
}
Student s = new Student();
b.setName(“张三”);
b.setAge(“18”);
...
// js: ------------------------------------------------
var s = new Object();
s.name = "张三";
s.age = "18";
// XML: -----------------------------------------------
<student>
<name>张三</name>
<age>18</age>
</student>
// JSON: ----------------------------------------------
{
"name":"张三",
"age":"18"
}
(2)JSON 值:
-
数字(整数或浮点数)
{ "age":30 }
-
对象(在大括号中)
{ "name":"张三" , "age":"18" }
-
数组(在中括号中)
{ "sites":[ { "name":"张三" , "age":"18" }, { "name":"李四" , "age":"19" }, { "name":"王五" , "age":"20" } ] }
-
逻辑值(true 或 false)
{ "flag":true }
-
字符串(在双引号中)
-
null
{ "runoob":null }
Java与JSON(JSON解析)
将Java中的对象快速的转换为 JSON格式的字符串.
将JSON格式的字符串转换为Java的对象.
Gson(Google)
- 将对象转换为JSON字符串
/**
* 1. 引入JAR包
* 2. 在需要转换JSON字符串的位置编写如下代码即可:
* String json = new Gson().toJSON(要转换的对象);
*/
public static void main(String[] args) {
Student s = new Student("张三",18);
String json = new Gson().toJson(s);
System.out.println(json);
}
- 将JSON字符串转换为对象
/**
* 1. 引入JAR包
* 2. 在需要转换Java对象的位置, 编写如下代码:
* 对象 = new Gson().fromJson(JSON字符串,对象类型.class);
*/
public static void main(String[] args) {
String json = "{\"name\":\"张三\",\"age\":18}";
Student s = new Gson().fromJson(json, Student.class);
System.out.println(s);
}
FastJson(阿里)
- 将对象转换为JSON字符串
/**
* 1. 引入JAR包
* 2. 在需要转换JSON字符串的位置编写如下代码即可:
* String json=JSON.toJSONString(要转换的对象);
*/
public static void main(String[] args) {s
Student s = new Student("张三",18);
String json=JSON.toJSONString(s);
System.out.println(json);
}
- 将JSON字符串转换为对象
/**
* 1. 引入JAR包
* 2. 在需要转换Java对象的位置, 编写如下代码:
* 类型 对象名=JSON.parseObject(JSON字符串, 类型.class);
* List<类型> list=JSON.parseArray(JSON字符串,类型.class);
*/
public static void main(String[] args) {
String json = "{\"name\":\"张三\",\"age\":18}";
Student s = JSON.parseObject(json, Student.class);
System.out.println(s);
}