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]
전체 데이터 바인딩
제네릭을 사용한 데이터 바인딩