[Spring] Jackson

박원준·2026년 3월 17일

Spring 입문

목록 보기
3/3

📘 Jackson 라이브러리

  • Jackson은 JSON 데이터 구조를 처리해주는 라이브러리
    • Object를 JSON 타입의 String으로 변환 가능
    • JSON 타입의 String을 Object로 변환 가능

Spring은 3.0버전 이후로 Jackson과 관련된 API를 제공함으로써, 우리가 직접 소스 코드를 작성하여 JSON 데이터를 처리하지 않아도 자동으로 처리해주고 있습니다.

  • SpringBoot의 starter-web dependencies 에서는 default로 Jackson 관련 라이브러리들을 제공하고 있습니다.
  • 직접 JSON 데이터를 처리해야할 때는 Jackson 라이브러리의 ObjectMapper를 사용할 수 있습니다.

1️⃣ Object To JSON

package com.sparta.springmvc.response;

import lombok.Getter;

@Getter
public class Star {
    String name;
    int age;

    public Star(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Star() {}
}
public class JacksonTest {

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

      ObjectMapper objectMapper = new ObjectMapper(); // Jackson 라이브러리의 ObjectMapper
      String json = objectMapper.writeValueAsString(star);

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

// String 타입의 json 형태로 반환
// 결과 : json = {"name":"Robbie","age":95}
  • ObjectMapperwriteValueAsString() 메서드를 사용하여 변환할 수 있습니다.
    • 파라미터에 JSON으로 변환시킬 Object의 객체를 주면됩니다.
  • Object를 JSON 타입의 String으로 변환하기 위해서는 해당 Object에 get Method가 필요합니다.
    • get Method가 없다면 직렬화(serializer) 에러가 발생합니다.

직렬화(serializer)란 객체(Object)를 전송하거나 저장할 수 있는 형태로 변환하는 것
즉, Java 객체 → JSON 문자열로 변환하는 것


2️⃣ JSON To Object

public class JacksonTest {

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

      ObjectMapper objectMapper = new ObjectMapper(); // Jackson 라이브러리의 ObjectMapper

      Star star = objectMapper.readValue(json, Star.class);
      System.out.println("star.getName() = " + star.getName());
      System.out.println("star.getName() = " + star.getAge());
  }
}

// 결과
// star.getName() = Robbie
// star.getAge() = 95
  • ObjectMapper의 readValue 메서드를 사용하여 변환할 수 있습니다.
    • 첫 번째 파라미터는 JSON 타입의 String, 두 번째 파라미터에는 변환할 Object의 class 타입을 주면됩니다.
  • JSON 타입의 String을 Object로 변환하기 위해서는 해당 Object에 기본 생성자와 get 혹은 set 메서드가 필요합니다.
    • 둘 중 하나라도 없다면 역직렬화(deserializer) 에러가 발생합니다.

  • JSON = { key : value } 입니다.
  • 따라서 직렬화와 역직렬화를 할 때는 key 이름 통일은 필수 입니다.
  • 혹은 Json 관련 어노테이션을 통해 처리할 수도 있습니다.

0개의 댓글