Chuyển đổi Java object và JSON string
json
8
Jackson
2
gson
1
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

24 bài viết.
152 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
45 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ư...
Nguyễn Tuấn Anh viết hơn 2 năm trước
45 41
White
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 ...
Nguyễn Tuấn Anh viết hơn 2 năm trước
27 14
White
15 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...
Nguyễn Tuấn Anh viết hơn 2 năm trước
15 1
Bài viết liên quan
White
5 0
Sử dụng Jacksondatabind mapping Object Json và ứng dụng load file config 1. Mapping Object Json Jacksondatabind Maven: com.fasterxml.jackson.c...
Tất Huân viết 1 năm trước
5 0
Male avatar
4 0
Câu chuyện Gần đây tôi đang chuẩn bị tham gia quản lý một dự án phần mềm. Công cụ quản lý dự án hiện tại chủ yếu là Redmine. Tuy nhiên do Redmine k...
Hawkie viết 9 tháng trước
4 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
24 bài viết.
152 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á!