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.
Nội dung chính
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.kienthuclaptrinh.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.kienthuclaptrinh.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.kienthuclaptrinh.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: [java 1="python" language=","][/java]
Ví dụ đọc chuỗi JSON trong java sử dụng phương thức ObjectMapper.readTree()
File: Jackson3Example.java
package vn.kienthuclaptrinh.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,