1、json简介
json:javascript object Notation js对象简谱,是一种轻量级数据交换格式(客户端与服务器,程序与程序之间数据交换的一种格式)
独立于编程语言,用文本表示数据
2、JSON 语法规则
JSON 语法是 JavaScript 对象表示语法的子集。
- 数据在名称/值对中
- 数据由逗号分隔
- 大括号 {} 保存对象
- 中括号 [] 保存数组,数组可以包含多个对象
- 在json格式中数组与对象可以相互嵌套
示例
3、JSON 解析
json最常用的两种解析方式
- Gson(谷歌)
- FastJson(阿里)
3.1 Gson
1、将Java对象转换成json示例
(1)、首先要导入jar包
(2)、在需要转换JSON字符串的位置编写如下代码即可:
String json = new Gson().toJSON(要转换的对象);
示例
Demo1类
package com.kaikeba.json;
import com.google.gson.Gson;
/**
* Gson:将Java对象转成json
*/
public class Demo1 {
public static void main(String[] args) {
//1、创建Gson对象
Gson gs =new Gson();
//2、转换
Book book = new Book("100","财富自由","18");
//将java对象转换成json
String json = gs.toJson(book);
System.out.println(json);
}
}
运行结果
{"id":"100","name":"财富自由","age":"18"}
Book类
package com.kaikeba.json;
import java.util.Objects;
public class Book {
private String id;
private String name;
private String age;
public Book() {
}
public Book(String id, String name, String age) {
this.id = id;
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Book book = (Book) o;
return Objects.equals(id, book.id) &&
Objects.equals(name, book.name) &&
Objects.equals(age, book.age);
}
@Override
public int hashCode() {
return Objects.hash(id, name, age);
}
@Override
public String toString() {
return "Book{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
}
2、将json转换Java对象
(1)、之前导过jar就不必再导入了
(2)、在需要转换Java对象的位置, 编写如下代码:
对象 = new Gson().fromJson(JSON字符串,对象类型.class);
示例
package com.kaikeba.json;
import com.google.gson.Gson;
/**
* Gson:将json转换Java对象
*/
public class Demo2 {
public static void main(String[] args) {
//1、创建Gson对象
Gson gs =new Gson();
//2、转换成Java对象
Book b = gs.fromJson("{\"id\":\"100\",\"name\":\"财富自由\",\"age\":\"18\"}",Book.class);
System.out.println(b.getId());
}
}
运行结果
100
3.2FastJson
1、将Java对象转换为json
(1)、导入fastjson.jar包
(2)、在需要转换JSON字符串的位置编写如下代码即可:
String json=JSON.toJSONString(要转换的对象);
代码示例
package com.kaikeba.json;
import com.alibaba.fastjson.JSON;
/**
* FastJson方式转换:将Java对象转换为json
*/
public class Demo4 {
public static void main(String[] args) {
Book book = new Book("001","床前明月光,疑是地上霜","22");
//1、转换
String json = JSON.toJSONString(book);
System.out.println(json);
}
}
运行结果
{"age":"22","id":"001","name":"床前明月光,疑是地上霜"}
2、将json转换为java对象
(1)导入fastjson.jar包
(2)在需要转换Java对象的位置, 编写如下代码:
类型 对象名=JSON.parseObject(JSON字符串, 类型.class);
示例代码
package com.kaikeba.json;
import com.alibaba.fastjson.JSON;
/**
* FastJson方式转换:将json转换为Java的字符串
*/
public class Demo5 {
public static void main(String[] args) {
//1、转换 将{"age":"22","id":"001","name":"床前明月光,疑是地上霜"}转换为字符串
Book book = JSON.parseObject("{\"age\":\"22\",\"id\":\"001\",\"name\":\"床前明月光,疑是地上霜\"}",Book.class);
System.out.println(book.getId());
}
}
运行结果
001