11/08/2018, 19:20

Ví dụ JSON với Java – Jackson

Ví dụ JSON với Java – json.simple Bài trước bạn đã biết cách sử dụng thư viện json.simple để đọc và ghi dữ liệu JSON trong Java. Bài này sẽ giới thiệu bạn một cách phổ biến khác để làm việc với chuỗi JSON trong Java, đó là sử dụng các thư viện Jackson. Sau đây là cài đặt và ví dụ ...

Ví dụ JSON với Java – json.simple

Bài trước bạn đã biết cách sử dụng thư viện json.simple để đọc và ghi dữ liệu JSON trong Java. Bài này sẽ giới thiệu bạn một cách phổ biến khác để làm việc với chuỗi JSON trong Java, đó là sử dụng các thư viện Jackson. Sau đây là cài đặt và ví dụ JSON với Java.

Cài đặt thư viện Jackson

1. Tải xuống các thư viện sau:

  • jackson-annotations-2.9.0.jar
  • jackson-core-2.9.4.jar
  • jackson-databind-2.9.4.jar

Hoặc:

2. Thêm phụ thuộc sau vào file pom.xml của Maven project.

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.4</version>
</dependency>

Ví dụ chuyển đổi đối tượng thành chuỗi JSON trong Java

File: Employee.java

package vn.viettuts.json;

import java.math.BigDecimal;
import java.util.List;

public class Employee {
    private String name;
    private int age;
    private BigDecimal salary;
    private List<String> skills;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public BigDecimal getSalary() {
        return salary;
    }

    public void setSalary(BigDecimal salary) {
        this.salary = salary;
    }

    public List<String> getSkills() {
        return skills;
    }

    public void setSkills(List<String> skills) {
        this.skills = skills;
    }
}

File: Jackson1Example.java

package vn.viettuts.json;

import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Jackson1Example {
    public static void main(String[] args) {
        convertObjectToJson();
    }

    private static String convertObjectToJson() {
        ObjectMapper mapper = new ObjectMapper();
        String jsonInString = null;
        Employee emp = createDummyObject();

        try {
            System.out.println("Chuyển đổi đối tượng thành chuỗi JSON:");
            jsonInString = mapper.writeValueAsString(emp);
            System.out.println(jsonInString);
            System.out.println();

            System.out.println("Chuyển đổi đối tượng thành chuỗi JSON với Format:");
            jsonInString = mapper.writerWithDefaultPrettyPrinter()
                    .writeValueAsString(emp);
            System.out.println(jsonInString);

        } catch (JsonGenerationException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return jsonInString;
    }

    private static Employee createDummyObject() {
        Employee emp = new Employee();

        emp.setName("Vinh");
        emp.setAge(27);
        emp.setSalary(new BigDecimal("1200"));

        List<String> skills = new ArrayList<String>();
        skills.add("java");
        skills.add("python");
        emp.setSkills(skills);

        return emp;
    }
}

Kết quả:

Chuyển đổi đối tượng thành chuỗi JSON:
{"name":"Vinh","age":27,"salary":1200,"skills":["java","python"]}

Chuyển đổi đối tượng thành chuỗi JSON với Format:
{
  "name" : "Vinh",
  "age" : 27,
  "salary" : 1200,
  "skills" : [ "java", "python" ]
}

Ví dụ chuyển đổi chuỗi JSON thành đối tượng trong Java

Phương thức ObjectMapper.readValue() để chuyển đổi chuỗi JSON thành một đối tượng trong java:

File: Jackson2Example.java

package vn.viettuts.json;

import java.io.IOException;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Jackson2Example {
    public static void main(String[] args) {
        ObjectMapper mapper = new ObjectMapper();
        String jsonInString = "{"name":"Vinh","age":27,"salary":1200,"
                + ""skills":["java","python"]}";
        Employee emp = null;
        try {
            emp = mapper.readValue(jsonInString, Employee.class);
            
            System.out.println("name: " + emp.getName());
            System.out.println("age: " + emp.getAge());
            System.out.println("salary: " + emp.getSalary());
            System.out.println("skills: " + emp.getSkills());
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Kết quả:

name: Vinh
age: 27
salary: 1200
skills: 

Ví dụ đọc chuỗi JSON trong java sử dụng phương thức ObjectMapper.readTree()

File: Jackson3Example.java

package vn.viettuts.json;

import java.io.IOException;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Jackson3Example {
    public static void main(String[] args) {
        ObjectMapper mapper = new ObjectMapper();
        String jsonInString = "{"name":"Vinh","age":27,"salary":1200,"
                + ""skills":["java","python"]}";
        try {
            JsonNode jsonNode = mapper.readTree(jsonInString);
            
            System.out.println("name: " + jsonNode.get("name").asText());
            System.out.println("age: " + jsonNode.get("age").asText());
            System.out.println("salary: " + jsonNode.get("salary").asText());
            System.out.print("skills: ");
            JsonNode arrNode =  jsonNode.get("skills");
            if (arrNode.isArray()) {
                for (final JsonNode objNode : arrNode) {
                    System.out.print(objNode.asText() + ", ");
                }
            }
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Kết quả:

name: Vinh
age: 27
salary: 1200
skills: java, python, 
Ví dụ JSON với Java – json.simple
0