
Data Binding μ JSON data κ³Ό Java POJO νμμ data λ₯Ό μλ‘ λ³ννλ κ³Όμ μ΄λ€. νν mapping μΌλ‘ λΆλ¦¬κΈ°λ νλ©°, κ³Όμ μ κ°κ° Deserialization, Serialization μ΄λΌκ³ νλ€.
μ¬κΈ°μ POJO λ λ€μμ μλ―Ένλ€.
POJO
Plain Old Java Object λ‘, νΉμ framework λ κΈ°μ μ μ’ μλμ§ μλ μμν Java object λ₯Ό μλ―Έ. Java μ κΈ°λ³Έμ μΈ κ°μ²΄μ§ν₯ μμΉμ λ°λ₯΄λ©°, μΌλ°μ μΌλ‘ field, method, getter/setter λ‘ κ΅¬μ±λ κ°λ¨ν ννμ class λ₯Ό μλ―Ένλ€.
Spring μμ, Spring Boot Starter Web μ Jackson μ΄λΌλ library λ₯Ό data binding μ μνμ¬ dependecy λ‘ μ¬μ©νλ€.
JSON to Java POJO

Jackson μ Deserialization, μ¦ JSON μμ POJO λ‘ binding ν λ setter λ₯Ό μ¬μ©νμ¬ λ³ννλ€.
μ’ λ λ΄λΆμ μΌλ‘ μ΄ν΄λ³΄λ©΄, Jackson μ JSON μ field name κ³Ό Java object μ field name μ λΉκ΅νμ¬ μλμΌλ‘ mapping μ μννλ€. μλ₯Ό λ€μ΄, Jackson μ id λ setId() method λ₯Ό, firstName μ λνμ¬λ setFirstName() method λ₯Ό call νλ λ°©μμΌλ‘ binding μ μννλ€λ κ²μ΄λ€.
Jackson μ μ΄λ κ² setter λ₯Ό ν΅νμ¬ μ κ·ΌνκΈ° λλ¬Έμ private field μ μ§μ μ μΌλ‘ μ κ·Όνμ§ μλλ€.
Java POJO to JSON

μ΄λ²μλ λ°λμ κ³Όμ μΈ Serialization μ΄λ€. Jackson μ getter λ₯Ό μ¬μ©νμ¬ mapping μ μννκ² λλ€.
μ΄λ κ² JSON data λ Jackson μ μνμ¬ POJO μ format μΌλ‘ λ³νλμ΄ REST Controller μκ² μ λ¬λκ³ , λ°λλ‘ JSON data λ Jackson μ μνμ¬ REST Controller μ POJO λ‘λΆν° return λλ€. λͺ¨λ κ²μ Jackson μ μνμ¬ μλμΌλ‘ μνλλ€.
Jackson Data Binding - Test

μ°μ μμ κ°μ κ΅¬μ‘°λ‘ REST Service λ₯Ό λ§λ€μ΄λ³΄μ. Development Process λ λ€μκ³Ό κ°λ€.
- Student μ λν Java POJO class λ₯Ό μμ±
@RestControllerμ μ¬μ©νμ¬ Spring REST Service λ₯Ό μμ±
Student POJO class λ firstName, lastName λ κ°μ field λ§μΌλ‘ ꡬμ±νκ³ , REST Controller λ λ€μκ³Ό κ°μ΄ μμ±νμ.
@RestController
@RequestMapping("/api")
public class StudentRestController {
@GetMapping("/students")
List<Student> getStudents() {
List<Student> theStudents = new ArrayList<>();
theStudents.add(new Student("Arne", "Slot"));
theStudents.add(new Student("Andy", "Robertson"));
theStudents.add(new Student("Mohamed", "Salah"));
return theStudents;
}
}μ΄μ Postman μ ν΅νμ¬ http://localhost:8080/api/students μΌλ‘ request λ₯Ό 보λ΄λ©΄ μλμ κ°μ΄ response κ° λ κ²μ λ³Ό μ μλ€.
REST Controller μμ List<Student> νν, μ¦ POJO format μΌλ‘ return νμ§λ§, Jackson μ΄ JSON μΌλ‘ λ³νμμΌμ κ²°κ³Όμ μΌλ‘ Client μλ JSON ννλ‘ μ λ¬λ κ²μ λ³Ό μ μλ€.