Google Gson là một thư viện Java hỗ trợ xử lý JSON (Chuyển đổi một chuỗi JSON thành đối tượng Java hoặc ngược lại).
Ngoài Gson cũng có rất nhiều thư viên khác hỗ trợ xử lý Json có thể kể đến như Json-simple, Jackson, json.org,… Tuy nhiên có một số lý do mà bạn nên sử dụng thư viện này:
- Chuẩn hóa: Gson là thư viện chuẩn hóa do Google quản lý
- Hiệu quả: Đây là một phần mở rộng đáng tin cậy, nhanh chóng và hiệu quả cho thư viện chuẩn Java
- Tối ưu hóa: Thư viện được tối ưu hóa cao
- Hỗ trợ Generics: Nó cung cấp hỗ trợ rộng rãi cho generics
- Hỗ trợ các class phức tạp: Nó hỗ trợ các đối tượng phức tạp với hệ thống phân cấp kế thừa sâu sắc
Giờ hãy cùng xem cách sử dụng thư viện này:
Cài đặt thư viện Gson
Để cài đặt thư viên Gson chúng ta có các cách sau:
- Sử dụng Maven:
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.9.0</version>
</dependency>
- Sử dụng Gradle:
// https://mvnrepository.com/artifact/com.google.code.gson/gson
implementation group: 'com.google.code.gson', name: 'gson', version: '2.9.0'
Chuyển đổi qua lại giữa JSON và Java Object
Chuyển đổi từ Object sang Json
Ví dụ mình có class sau:
public class Person {
private String name;
private int age;
private String address;
public Person(String name, int age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
public String toString() {
return name + " - " + age + " - " + address;
}
}
Tiếp theo để có thể sử dụng các phương thức của Gson ta cần tạo đối tượng Gson. Để chuyển đổi một object sang JSON sử dụng phương thức toJson()
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
//Tạo đối tượng Gson
Gson gson = new Gson();
Person person = new Person("Ngọc", 5, "Hà Giang");
//Chuyển đổi từ Object sang JSON
String result = gson.toJson(person);
System.out.println(result);
}
}
Kết quả nhận được:
{"name":"Ngọc","age":5,"address":"Hà Giang"}
Chuyển đổi từ JSON thành Object
Để chuyển đổi từ JSON sang Object ta cũng cần tạo đối tượng Gson và sử dụng phương thức fromJson()
để chuyển đổi
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
//Tạo đối tượng Gson
Gson gson = new Gson();
//Chuyển đổi từ JSON sang Object
String json = "{\"name\":\"Linh\",\"age\":8,\"address\":\"Hà Nội\"}";
Person newPerson = gson.fromJson(json, Person.class);
System.out.println(newPerson);
}
}
Kết quả:
Linh - 8 - Hà Nội
Chuyển đổi giữa JSON và mảng
Chuyển đổi từ JSON sang mảng
Giả sử mình có một file JSON như sau:
[{
"name": "Jimmy Buncom",
"age": 30,
"address": "Indonesia"
}, {
"name": "Lucille Pollastrone",
"age": 24,
"address": "Poland"
}, {
"name": "Hort Tall",
"age": 15,
"address": "Indonesia"
}, {
"name": "Ruprecht Plampeyn",
"age": 21,
"address": "China"
}, {
"name": "Erhard Liles",
"age": 26,
"address": "Dominican Republic"
}, {
"name": "Fremont Murrow",
"age": 20,
"address": "North Korea"
}]
import com.google.gson.Gson;
import java.io.FileNotFoundException;
import java.io.FileReader;
public class Main {
public static void main(String[] args) {
//Tạo đối tượng Gson
Gson gson = new Gson();
//Chuyển đổi từ JSON sang mảng
Person[] persons = null;
try {
FileReader reader = new FileReader("person.json");
persons = gson.fromJson(reader, Person[].class);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
for (Person p : persons){
System.out.println(p);
}
}
}
Kết quả trả về:
Jimmy Buncom - 30 - Indonesia
Lucille Pollastrone - 24 - Poland
Hort Tall - 15 - Indonesia
Ruprecht Plampeyn - 21 - China
Erhard Liles - 26 - Dominican Republic
Chuyển đổi từ mảng sang JSON
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
//Tạo đối tượng Gson
Gson gson = new Gson();
//Chuyển đổi từ mảng sang JSON
Person arr[] = new Person[5];
arr[0] = new Person("John", 25, "American");
arr[1] = new Person("Chris", 30, "France");
arr[2] = new Person("Madeline", 19, "Colombia");
arr[3] = new Person("Anna", 21, "Russia");
arr[4] = new Person("Hoàng", 27, "Việt Nam");
String rs = gson.toJson(arr);
System.out.println(rs);
}
}
Kết quả
[
{"name": "John","age": 25,"address": "American"},
{"name": "Chris","age": 30,"address": "France"},
{"name": "Madeline","age": 19,"address": "Colombia"},
{"name": "Anna","age": 21,"address": "Russia"},
{"name": "Hoàng","age": 27,"address": "Việt Nam"}
]
Chuyển đổi qua lại giữa JSON và Collection
Với Collection mình sẽ sử dụng ArrayList để thực hiện ví dụ. Mình vẫn sử dụng file JSON ban nãy
Chuyển đổi từ JSON sang ArrayList
Để Gson hiểu được cấu trúc của ArrayList đó ta cần chỉ tới kiểu của nó. Thật may mắn khi Gson có một lớp để giúp ra tìm đúng kiểu dữ liệu đó là TypeToken
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.lang.reflect.Type;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
//Tạo đối tượng Gson
Gson gson = new Gson();
//Chuyển đổi từ JSON sang ArrayList
ArrayList<Person> list = new ArrayList<>();
try {
FileReader reader = new FileReader("person.json");
Type type = new TypeToken<ArrayList<Person>>(){}.getType();
list = gson.fromJson(reader, type);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
for(Person p : list){
System.out.println(p);
}
}
}
Kết quả:
Jimmy Buncom - 30 - Indonesia
Lucille Pollastrone - 24 - Poland
Hort Tall - 15 - Indonesia
Ruprecht Plampeyn - 21 - China
Erhard Liles - 26 - Dominican Republic
Còn đối với chuyển đổi từ ArrayList sang JSON thì cũng chỉ cần thực hiện tương tự như với chuyển đổi từ mảng sang JSON
Khóa học Java FullStack dành cho người mới bắt đầu
Chi tiết: https://java.techmaster.vn/
Liên hệ hỗ trợ: Ms Mẫn - 0963023185 (zalo)
Bình luận