10. Jackson이란 무엇일까?

2026. 2. 10. 23:32·BackEnd/내일배움캠프

Jackson은 Java 객체와 JSON 데이터를 서로 변환해주는 라이브러리이다.
Spring 환경에서는 기본적으로 Jackson이 내장되어 있어 별도의 의존성 설정 없이 바로 사용할 수 있다.

Jackson을 사용하면 다음 두 가지 변환이 가능하다.

  • Java Object → JSON
  • JSON → Java Object

Spring MVC에서 @ResponseBody, @RestController를 사용할 때도 내부적으로 Jackson이 사용된다.

 

 

ObjectMapper

Jackson에서 실제 변환 작업을 담당하는 핵심 클래스가 ObjectMapper이다.
이 클래스를 통해 객체 직렬화(serialization)와 역직렬화(deserialization)를 수행한다.

 

Object → JSON (직렬화)

Java 객체를 JSON 문자열 형태로 변환하는 것을 직렬화(Serialization) 라고 한다.

@Test
@DisplayName("Object To JSON : get Method 필요")
void test1() throws JsonProcessingException {
    Star star = new Star("Robbie", 95);

    ObjectMapper objectMapper = new ObjectMapper();
    String json = objectMapper.writeValueAsString(star);

    System.out.println("json = " + json);
}

 

동작 원리 및 주의사항

  • Jackson은 getter 메서드를 기준으로 객체의 필드를 JSON으로 변환한다.
  • Lombok의 @Getter를 사용하면 Jackson이 내부적으로 해당 getter를 호출한다.
  • getter가 존재하지 않으면 다음과 같은 문제가 발생한다.
    • 직렬화 불가
    • No serializer found 관련 에러 발생

즉, Object → JSON 변환 시에는 getter 메서드가 반드시 필요하다.

 

 

JSON → Object (역직렬화)

JSON 문자열을 Java 객체로 변환하는 것을 역직렬화(Deserialization) 라고 한다.

@Test
@DisplayName("JSON To Object : 기본 생성자 & (get OR set) Method 필요")
void test2() throws JsonProcessingException {
    String json = "{\"name\":\"Robbie\",\"age\":95}";

    ObjectMapper objectMapper = new ObjectMapper();
    Star star = objectMapper.readValue(json, Star.class);

    System.out.println("star.getName() = " + star.getName());
}

파라미터 설명

  • 첫 번째 파라미터: JSON 형태의 문자열
  • 두 번째 파라미터: 변환 대상이 될 클래스 타입

 

JSON → Object 변환 시 필수 조건

1. 기본 생성자 필요

  • Jackson은 객체를 생성할 때 기본 생성자(NoArgsConstructor) 를 먼저 호출한다.
  • 기본 생성자가 없으면 객체 생성 자체가 불가능하여 역직렬화가 실패한다.
public Star() {}

 

2. Setter 또는 Getter 필요

  • JSON 값을 객체의 필드에 주입하기 위해 setter가 필요하다.
  • @Setter가 있으면 정상 동작한다.
  • setter가 없고 getter만 있는 경우에도 일부 상황에서는 동작하지만, 일반적으로 setter 사용을 권장한다.

3. JSON Key와 필드명이 정확히 일치해야 함

{
  "name": "Robbie",
  "age": 95
}
  • JSON의 key 값과 Java 클래스의 필드명이 다르면 에러가 발생한다.
  • Java 객체에 존재하지 않는 key가 JSON에 포함되어 있어도 에러가 발생한다.

이 부분은 실무에서도 매우 중요한 포인트이며,
API 스펙 변경 시 가장 자주 문제를 일으키는 요소 중 하나이다.

'BackEnd > 내일배움캠프' 카테고리의 다른 글

12. HTTP 데이터를 객체로 처리하는 방법  (0) 2026.02.10
11. Path Variable과 Request Param  (0) 2026.02.10
9. 데이터를 Client에 반환하는 방법  (0) 2026.02.10
8. 정적 페이지와 동적 페이지  (0) 2026.02.10
7. Controller란?  (0) 2026.02.10
'BackEnd/내일배움캠프' 카테고리의 다른 글
  • 12. HTTP 데이터를 객체로 처리하는 방법
  • 11. Path Variable과 Request Param
  • 9. 데이터를 Client에 반환하는 방법
  • 8. 정적 페이지와 동적 페이지
JK-LEE98
JK-LEE98
백엔드 개발자
  • JK-LEE98
    JK-LEE98
    JK-LEE98
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 나의 지식 공유 (4)
      • SQL (4)
      • PS (10)
      • BackEnd (32)
        • Java (3)
        • Spring (4)
        • 내일배움캠프 (20)
        • 프로그래머스 데브코스 (5)
      • 건강한 나 되기🍀 (10)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
JK-LEE98
10. Jackson이란 무엇일까?
상단으로

티스토리툴바