最近学习了关于json解析的东西,目前关于json有很多,最常用的就是谷歌的Gson以及阿里的FastJson,在这里对上面两种方式做一个总结。
一、Gson下载和使用
Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。
- 引入JAR包,github下载地址。
- 实现代码
- 将对象转换为JSON字符串
在需要转换JSON字符串的位置编写如下代码即可:
String json=JSON.toJSONString(要转换的对象);
案例
(实体类)
import java.util.Objects;
public class Book {
private String id;
private String name;
private String info;
@Override
public String toString() {
return "Book{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", info='" + info + '\'' +
'}';
}
public Book(String id, String name, String info) {
this.id = id;
this.name = name;
this.info = info;
}
public Book() {
}
@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(info, book.info);
}
@Override
public int hashCode() {
return Objects.hash(id, name, info);
}
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 getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
(实现)
import com.google.gson.Gson;
public class JosnDemo1 {
public static void main(String[] args) {
Gson gson = new Gson();
Book book = new Book("100","测试","测试");
String json = gson.toJson(book);
System.out.println(json);
}
}
(结果)
{"id":"100","name":"测试","info":"测试"}
- 将JSON字符串转换为对象
在需要转换Java对象的位置, 编写如下代码:
对象 = new Gson().fromJson(JSON字符串,对象类型.class);
案例
(实现一)
import com.google.gson.Gson;
public class JosnDemo1 {
public static void main(String[] args) {
Gson gson = new Gson();
Book book1 = gson.fromJson("{\"id\":\"100\",\"name\":\"测试\",\"info\":\"测试\"}",Book.class);
System.out.println(book1);
}
}
(结果)
Book{id='100', name='测试', info='测试'}
(实现二)
import com.google.gson.Gson;
import java.util.HashMap;
import java.util.List;
public class JosnDemo2 {
public static void main(String[] args) {
//1. 创建Gson对象
Gson g = new Gson();
//2. 转换 : {"id":"100","name":"金苹果","info":"种植苹果真辛苦","page":["锄禾日当午","汗滴禾下土","嘿嘿嘿嘿嘿"]}
HashMap data = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果真辛苦\",\"page\":[\"锄禾日当午\",\"汗滴禾下土\",\"嘿嘿嘿嘿嘿\"]}", HashMap.class);
List page = (List) data.get("page");
System.out.println(page.get(1));
}
}
(结果)
汗滴禾下土
二、FastJson下载和使用
FastJson是由阿里巴巴工程师基于JAVA开发的一款JSON解析器和生成器,可用于将Java对象转换为其JSON表示形式。它还可以用于将JSON字符串转换为等效的Java对象。FastJson可以处理任意Java对象,包括没有源代码的预先存在的对象。
- 引入JAR包,github下载地址。
- 实现代码
- 将对象转换为JSON字符串
在需要转换JSON字符串的位置编写如下代码即可:
String json=JSON.toJSONString(要转换的对象);
案例
(实现)
import com.alibaba.fastjson.JSON;
import java.util.List;
public class JosnDemo3 {
public static void main(String[] args) {
Book book = new Book("1002","测试","测试");
String json = JSON.toJSONString(book);
System.out.println(json);
}
}
(结果)
{"id":"1002","info":"测试","name":"测试"}
- 将JSON字符串转换为对象
在需要转换Java对象的位置, 编写如下代码:
类型 对象名=JSON.parseObject(JSON字符串, 类型.class);
或
List<类型> list=JSON.parseArray(JSON字符串,类型.class);
案例
(实现)
import com.alibaba.fastjson.JSON;
import java.util.List;
public class JosnDemo3 {
public static void main(String[] args) {
Book book1 = JSON.parseObject("{\"id\":\"1002\",\"info\":\"测试\",\"name\":\"测试\"}",Book.class);
System.out.println(book1);
List<String> strings = JSON.parseArray("[\"一二三\",\"二三四\",\"三四五\"]", String.class);
System.out.println(strings.get(1));
}
}
(结果)
Book{id='1002', name='测试', info='测试'}
二三四