ObjectMapper란?

진기·2024년 1월 18일

Springboot

목록 보기
4/9

🌏ObjectMapper

  • JSON 형식을 사용할 때, 응답(response)들을 직렬화(Object -> String 문자열)하고 요청(request)들을 역질렬화(String 문자열 -> Object) 할 때 사용하는 기술이다.

JSON(Javascript Object Notation)

  • "키:값" 쌍으로 이루어진 데이터 객체를 전달하기 위해 사람이 읽을 수 있는 텍스트를 사용하는 포맷이다.
  • 본래 자바스크립트 언어로부터 파생되어 자바스크립트 구문 형식을 따르지만 플랫폼과 언어 독립형 데이터 형식이다.
  • 프로그래밍 언어나 플랫폼에 독립적이므로 C, 자바, 파이썬 등에서 JSON 데이터 생성을 위한 코드를 각자 가지고 있다.
  • JS를 제외한 언어는 라이브러리를 사용해야하는 경우가 많다.

직렬화(Serialize)

  • 데이터를 전송하거나 저장할 때 바이트 문자열이어야 하기 때문에 객체들을 문자열로 바꾸어 주는 것이다.
  • Object -> String 문자열

역직렬화(Deserialize)

  • 데이터가 모두 전송된 이후, 수신측에서 다시 문자열을 기존의 객체로 회복시켜주는 것이다.
  • 역직렬화를 위해서는 기본생성자가 반드시 필요하다
  • String 문자열 -> Object
  • 스프링부트의 경우 spring-starter-web에 기본적으로 Jackson 라이브러리가 있어서 Object <-> JSON 간 변환은 자동으로 처리된다.
    • Jackson 라이브러리란 자바에서 고수준의 JSON 처리기이다.
  • @RestController 의 경우, 요청과 응답이 내부적으로 직렬화/역직렬화 되는데 이는 Jackson 라이브러리가 있기 때문이다.

ObjcetMapper 사용방법

@Getter // Object -> String 문자열로 바꿀 때 필요
class Car {
 private String name;
 private String color;
 
 public Car(String name, String color) {
  this.name = name;
  this.color = color;
 }
 
 public Car() { // String 문자열 => Object로 바꿀 때 필요
  this.name = null;
  this.color = null;
 } 
}

1) Object -> String 문자열

ObjectMapper mapper = new ObjectMapper();
Car car = new Car("K5", "gray");

String text = mapper.WriteValueAsString(car); //{"name":"K5","color":"gray"}

2) String 문자열 -> Object

Car carObject = mapper.readValue(text, Car.class); //Car{name='k5',color='gary'}
  • 주의) Car 클래스에서 내가 만드는 메서드나 생성자 이름에 get이라는 단어가 들어가지 않도록 한다!
profile
개발 성장 이야기

0개의 댓글