[SpringBoot] Jackson 라이브러리

정재현·2024년 1월 22일
0

Spring Boot

목록 보기
16/19
post-thumbnail

Jackson 라이브러리

JSON 데이터 구조를 처리해주는 라이브러리

  • Spring은 3.0버전 이후로 Jackson과 관련된 API를 제공함으로써, 우리가 직접 소스 코드를 작성하여 JSON 데이터를 처리하지 않아도 자동으로 처리해주고 있다.
  • SpringBoot의 starter-web에서는 default로 Jackson 관련 라이브러리들을 제공하고 있다.
    • External Libraries 파일을 확인해보면 jackson라이브러리가 자동으로 추가가 되어 있는 것을 확인할 수 있다.

효과

  • Object를 JSON 타입의 String으로 변환 가능
  • JSON 타입의 Stirng을 Object로 변환 가능

Jackson 라이브러리를 사용하지 않고 코드로 직접 JSON형태의 데이터로 변경하거나 JSON형태의 데이터를 다루는 방법

Jackson 라이브러리의 ObjectMapper를 사용

Object → JSON (직렬화)

objectMapperwriteValueAsString메서드를 사용하여 변환 가능
파라미터에 JSON으로 변환시킬 Object의 객체를 주면 된다.
→ writeValueAsString(JSON형태의 String 타입으로 변환할 객체)

사용 방법

Object를 JSON 타입의 String으로 변환하기 위해서는 해당 Object의 필드에 해당하는 get() Method가 필요하다
@Getter 필요

@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); // JSON형태의 String 타입으로 변환할 객체

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

JSON → Object (역직렬화)

objectMapperreadValue 메서드를 사용하여 변환 가능
첫 번째 파라미터는 JSON 타입의 String, 두 번째 파라미터에는 변환할 Object의 class 타입을 주면 된다.
→ readValue(json, 만들고 싶은 객체의 타입)

사용 방법

JSON 타입의 String을 Object로 변환하기 위해서는 해당 Object에 기본 생성자와 get() 혹은 set() 메서드가 필요하다.
→ 즉, @NoArgsConstructor & @Getter 혹은 @Setter 필요

@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());
}

주의사항

(key : value) 값을 전달할 때 key값을 클래스 필드 이름과 동일하게 전달해줘야 한다.


profile
공부 기록 보관소

0개의 댓글