Xóa bài viết
Bạn có chắc chắn muốn xóa bài viết này không ?
Xóa bình luận
Bạn có chắc chắn muốn xóa bình luận này không ?
Chuyển đổi Java object và JSON string
Trong bài viết này, mình sẽ sử dụng 2 thư viện xử lý JSON phổ biến nhất hiện nay là Jackson và Gson để thực hiện convert Java object sang JSON string và ngược lại.
1. Chuẩn bị
Chúng ta có class Book
sau:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Book {
private String title;
private double price;
private String[] tags;
private List<String> authors = new ArrayList<>();
private Description description;
public static class Description {
private int pages;
private String isbn;
public Description() {
}
public Description(int pages, String isbn) {
this.pages = pages;
this.isbn = isbn;
}
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
@Override
public String toString() {
return "Description{" +
"pages=" + pages +
", isbn='" + isbn + '\'' +
'}';
}
}
public Book() {
}
public Book(String title, double price, String[] tags, List<String> authors, Description description) {
this.title = title;
this.price = price;
this.tags = tags;
this.authors = authors;
this.description = description;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String[] getTags() {
return tags;
}
public void setTags(String[] tags) {
this.tags = tags;
}
public List<String> getAuthors() {
return authors;
}
public void setAuthors(List<String> authors) {
this.authors = authors;
}
public Description getDescription() {
return description;
}
public void setDescription(Description description) {
this.description = description;
}
@Override
public String toString() {
return "Book{" +
"title='" + title + '\'' +
", price=" + price +
", tags=" + Arrays.toString(tags) +
", authors=" + authors +
", description=" + description +
'}';
}
}
Khởi tạo một đối tượng Book
thông qua phương thức getMyBook()
:
public static Book getMyBook() {
String[] tags = new String[]{"X", "Y", "Z"};
List<String> authors = Arrays.asList("Mr.A", "Mrs.B", "Mr.C", "Mrs.D");
Book.Description description = new Book.Description(100, "0123456789");
Book myBook = new Book("My Book", 69.96, tags, authors, description);
return myBook;
}
2. Sử dụng thư viện Jackson
2.1. Chuẩn bị
Đầu tiên, chúng ta cần import dependency jackson-databind
:
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.7</version>
</dependency>
Khởi tạo một đối tượng com.fasterxml.jackson.databind.ObjectMapper
:
ObjectMapper mapper = new ObjectMapper();
2.2. Convert Object thành chuỗi JSON
try {
String json = mapper.writeValueAsString(getMyBook());
System.out.println(json);
} catch (IOException e) {
e.printStackTrace();
}
Kết quả:
{"title":"My Book","price":69.96,"tags":["X","Y","Z"],"authors":["Mr.A","Mrs.B","Mr.C","Mrs.D"],"description":{"pages":100,"isbn":"0123456789"}}
2.3. Convert chuỗi JSON thành Object
try {
String json = mapper.writeValueAsString(getMyBook());
Book book = mapper.readValue(json, Book.class);
System.out.println(book);
} catch (IOException e) {
e.printStackTrace();
}
Kết quả:
Book{title='My Book', price=69.96, tags=[X, Y, Z], authors=[Mr.A, Mrs.B, Mr.C, Mrs.D], description=Description{pages=100, isbn='0123456789'}}
2.4. Convert chuỗi JSON thành mảng
try {
String json = mapper.writeValueAsString(getMyBook().getTags());
String[] tags = mapper.readValue(json, String[].class);
System.out.println(Arrays.toString(tags));
} catch (IOException e) {
e.printStackTrace();
}
Kết quả:
[X, Y, Z]
2.5. Convert chuỗi JSON thành Collection
import com.fasterxml.jackson.core.type.TypeReference;
try {
String json = mapper.writeValueAsString(getMyBook().getAuthors());
List<String> authors = mapper.readValue(json, new TypeReference<List<String>>(){});
System.out.println(Arrays.toString(authors.toArray()));
} catch (IOException e) {
e.printStackTrace();
}
Kết quả:
[Mr.A, Mrs.B, Mr.C, Mrs.D]
3. Sử dụng thư viện Gson
3.1. Chuẩn bị
Đầu tiên, chúng ta cần import dependency gson
:
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
Khởi tạo một đối tượng com.google.gson.Gson
:
Gson gson = new Gson();
3.2. Convert Object thành chuỗi JSON
String json = gson.toJson(getMyBook());
System.out.println(json);
Kết quả:
{"title":"My Book","price":69.96,"tags":["X","Y","Z"],"authors":["Mr.A","Mrs.B","Mr.C","Mrs.D"],"description":{"pages":100,"isbn":"0123456789"}}
3.3. Convert chuỗi JSON thành Object
String json = gson.toJson(getMyBook());
Book book = gson.fromJson(json, Book.class);
System.out.println(book);
Kết quả:
Book{title='My Book', price=69.96, tags=[X, Y, Z], authors=[Mr.A, Mrs.B, Mr.C, Mrs.D], description=Description{pages=100, isbn='0123456789'}}
3.4. Convert chuỗi JSON thành mảng
String json = gson.toJson(getMyBook().getTags());
String[] tags = gson.fromJson(json, String[].class);
System.out.println(Arrays.toString(tags));
Kết quả:
[X, Y, Z]
3.5. Convert chuỗi JSON thành Collection
import com.google.gson.reflect.TypeToken;
String json = gson.toJson(getMyBook().getAuthors());
List<String> authors = gson.fromJson(json, new TypeToken<List<String>>(){}.getType());
System.out.println(Arrays.toString(authors.toArray()));
Kết quả:
[Mr.A, Mrs.B, Mr.C, Mrs.D]
Bình luận

{{ comment.user.name }}
Bỏ hay
Hay

Cùng một tác giả

49
41
MyContact là một ứng dụng mà mình thường viết mỗi khi học một ngôn ngữ hay công nghệ mới. MyContact chỉ là một ứng dụng CRUD đơn giản, cho phép ngư...

27
14
Hướng dẫn lập trình Spring Security Trong bài viết lần này, mình sẽ giúp các bạn bước đầu tìm hiểu (Link) thông qua xây dựng các chức năng: Đăng ...

17
1
Giới thiệu Spring Framework Trong bài viết này, mình sẽ giới thiệu cho các bạn về một trong những Java EE framework rất nổi bật và phổ biến hiện n...