Jackson - Liên kết dữ liệu
Data Binding API được sử dụng để chuyển đổi JSON đến và từ POJO (Đối tượng Java cũ thuần túy) bằng cách sử dụng trình truy cập thuộc tính hoặc sử dụng chú thích. Nó có hai loại.
Simple Data Binding - Chuyển đổi JSON sang và từ Java Maps, Lists, Strings, Numbers, Booleans và các đối tượng null.
Full Data Binding - Chuyển đổi JSON sang và từ bất kỳ loại JAVA nào.
ObjectMapper đọc / ghi JSON cho cả hai loại liên kết dữ liệu. Data Binding là cách thuận tiện nhất và tương tự như JAXB parer cho XML.
Liên kết dữ liệu đơn giản
Liên kết dữ liệu đơn giản đề cập đến việc ánh xạ các kiểu dữ liệu JSON sang JAVA Core. Bảng sau minh họa mối quan hệ giữa kiểu JSON và kiểu Java.
Sr không. | Loại JSON | Loại Java |
---|---|---|
1 | vật | LinkedHashMap <Chuỗi, Đối tượng> |
2 | mảng | ArrayList <Đối tượng> |
3 | chuỗi | Chuỗi |
4 | số đầy đủ | Số nguyên, Dài hoặc Lớn hơn |
5 | Số phân số | Double / BigDecimal |
6 | sự thật | sai | Boolean |
7 | vô giá trị | vô giá trị |
Hãy xem ràng buộc dữ liệu đơn giản trong hoạt động. Ở đây, chúng tôi sẽ ánh xạ trực tiếp các loại cơ bản của JAVA sang JSON và ngược lại.
Tạo tệp lớp java có tên JacksonTester trong C:\>Jackson_WORKSPACE.
Tệp: JacksonTester.java
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonTester {
public static void main(String args[]){
JacksonTester tester = new JacksonTester();
try {
ObjectMapper mapper = new ObjectMapper();
Map<String,Object> studentDataMap = new HashMap<String,Object>();
int[] marks = {1,2,3};
Student student = new Student();
student.setAge(10);
student.setName("Mahesh");
// JAVA Object
studentDataMap.put("student", student);
// JAVA String
studentDataMap.put("name", "Mahesh Kumar");
// JAVA Boolean
studentDataMap.put("verified", Boolean.FALSE);
// Array
studentDataMap.put("marks", marks);
mapper.writeValue(new File("student.json"), studentDataMap);
//result student.json
//{
// "student":{"name":"Mahesh","age":10},
// "marks":[1,2,3],
// "verified":false,
// "name":"Mahesh Kumar"
//}
studentDataMap = mapper.readValue(new File("student.json"), Map.class);
System.out.println(studentDataMap.get("student"));
System.out.println(studentDataMap.get("name"));
System.out.println(studentDataMap.get("verified"));
System.out.println(studentDataMap.get("marks"));
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Student {
private String name;
private int age;
public Student(){}
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 String toString(){
return "Student [ name: "+name+", age: "+ age+ " ]";
}
}
Verify the result
Biên dịch các lớp bằng cách sử dụng javac trình biên dịch như sau:
C:\Jackson_WORKSPACE>javac JacksonTester.java
Bây giờ hãy chạy jacksonTester để xem kết quả:
C:\Jackson_WORKSPACE>java JacksonTester
Xác minh đầu ra
{name=Mahesh, age=10}
Mahesh Kumar
false
[1, 2, 3]
Dữ liệu đầy đủ ràng buộc
Liên kết dữ liệu với Generics