Chuyển đổi Java object và JSON string
json
15
Jackson
8
gson
3
White

Nguyễn Tuấn Anh viết ngày 25/10/2018

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à JacksonGson để 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


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Nguyễn Tuấn Anh

30 bài viết.
272 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
60 42
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ư...
Nguyễn Tuấn Anh viết hơn 4 năm trước
60 42
White
43 16
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 ...
Nguyễn Tuấn Anh viết hơn 4 năm trước
43 16
White
23 0
Trước đây khi mới học Spring, mình thường nhảy thẳng lên tìm hiểu các project như Spring MVC hay Spring Boot để viết ứng dụng, thỉnh thoảng mới ngó...
Nguyễn Tuấn Anh viết gần 3 năm trước
23 0
Bài viết liên quan
Male avatar
0 0
https://grokonez.com/json/gsonconvertingjavaobjecttofromjson Gson to convert Java Object to/from Json The tutorial guides you how to convert Java...
loveprogramming viết 5 tháng trước
0 0
Male avatar
0 0
Kotlin How to convert Object to/from JSON by Gson with Kotlin language https://grokonez.com/kotlin/kotlinconvertobjecttofromjsongsonkotlinlanguage...
loveprogramming viết 6 tháng trước
0 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
30 bài viết.
272 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!