Jackson-데이터 바인딩

Data Binding API는 속성 접근자를 사용하거나 주석을 사용하여 JSON을 POJO (Plain Old Java Object)간에 변환하는 데 사용됩니다. 두 가지 유형입니다.

  • Simple Data Binding -JSON을 Java Maps, Lists, Strings, Numbers, Booleans 및 null 개체간에 변환합니다.

  • Full Data Binding -JSON을 모든 JAVA 유형으로 변환합니다.

ObjectMapper는 두 가지 유형의 데이터 바인딩 모두에 대해 JSON을 읽고 씁니다. 데이터 바인딩은 가장 편리한 방법이며 XML 용 JAXB 파러와 유사합니다.

간단한 데이터 바인딩

단순 데이터 바인딩은 JSON을 JAVA Core 데이터 유형에 매핑하는 것을 말합니다. 다음 표는 JSON 유형과 Java 유형 간의 관계를 보여줍니다.

Sr. No. JSON 유형 자바 유형
1 목적 LinkedHashMap <문자열, 객체>
2 정렬 ArrayList <개체>
4 완전한 숫자 Integer, Long 또는 BigInteger
5 소수 Double / BigDecimal
6 사실 | 그릇된 부울
7 없는 없는

작동중인 간단한 데이터 바인딩을 살펴 보겠습니다. 여기에서는 JAVA 기본 유형을 JSON에 직접 매핑하거나 그 반대로 매핑합니다.

JacksonTester라는 Java 클래스 파일을 만듭니다. C:\>Jackson_WORKSPACE.

파일 : 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

다음을 사용하여 클래스 컴파일 javac 다음과 같이 컴파일러 :

C:\Jackson_WORKSPACE>javac JacksonTester.java

이제 jacksonTester를 실행하여 결과를 확인합니다.

C:\Jackson_WORKSPACE>java JacksonTester

출력 확인

{name=Mahesh, age=10}
Mahesh Kumar
false
[1, 2, 3]

전체 데이터 바인딩

제네릭을 사용한 데이터 바인딩