Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Chuyển đổi Java POJO sang JSON dễ dàng với Jackson và Gson

Hướng dẫn này trình bày cách chuyển đổi đối tượng Java sang JSON bằng hai thư viện phổ biến: Jackson và Gson.

Chúng ta sẽ dùng class Person - một POJO tiêu chuẩn. Sau khi tạo đối tượng person, có thể chuyển nó sang JSON với các thư viện khác nhau.

import java.util.List;
import java.util.Map;

public class Person {
    String name;
    Integer age;
    List<String> hobbies;
    Map<String, String> languages;

    // Getters và Setters
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public Integer getAge() { return age; }
    public void setAge(Integer age) { this.age = age; }
    public List<String> getHobbies() { return hobbies; }
    public void setHobbies(List<String> hobbies) { this.hobbies = hobbies; }
    public Map<String, String> getLanguages() { return languages; }
    public void setLanguages(Map<String, String> languages) { this.languages = languages; }
}

Chuyển đổi Java sang JSON với Jackson

Sử dụng class ObjectMapper của Jackson để chuyển đối tượng Java sang JSON. ObjectMapper có nhiều phương thức ghi JSON ra file hoặc ra String.

Ví dụ dưới đây ghi ra file và dùng pretty print để hiển thị JSON đẹp:

Thêm dependency Jackson vào pom.xml:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.10.2</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.10.2</version>
</dependency>
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ConvertJavaObjectToJson {
    public static void main(String[] args) {
        ObjectMapper mapper = new ObjectMapper();
        Person person = newPerson();
        try {
            mapper.writeValue(new File("person.json"), person);
            String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(person);
            System.out.println(jsonString);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static Person newPerson() {
        Person person = new Person();
        List<String> hobbies = new ArrayList<>();
        hobbies.add("Football");
        hobbies.add("Cooking");
        hobbies.add("Swimming");
        Map<String, String> languages = new HashMap<>();
        languages.put("French", "Beginner");
        languages.put("German", "Intermediate");
        languages.put("Spanish", "Advanced");
        person.setName("David");
        person.setAge(30);
        person.setHobbies(hobbies);
        person.setLanguages(languages);
        return person;
    }
}

Kết quả:

{
  "name": "David",
  "age": 30,
  "hobbies": ["Football", "Cooking", "Swimming"],
  "languages": {
    "French": "Beginner",
    "German": "Intermediate",
    "Spanish": "Advanced"
  }
}

File person.json cũng được tạo trong workspace dự án.

  • Cách parse JSON trong Java
  • Cách chuyển Java Map sang JSON
  • Cách encode và decode JSON

Chuyển đổi Java sang JSON với Gson

Thêm dependency Gson:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
</dependency>
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ConvertJavaObjectToJson {
    public static void main(String[] args) {
        Gson gson = new Gson();
        Person person = newPerson();
        String jsonString = gson.toJson(person);
        System.out.println(jsonString);
    }
    // newPerson() giống như ví dụ Jackson
}

Kết quả JSON compact (không pretty print mặc định):

{"name":"David","age":30,"hobbies":["Football","Cooking","Swimming"],"languages":{"French":"Beginner","German":"Intermediate","Spanish":"Advanced"}}