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