Jackson
- JSON 데이터 구조를 처리해주는 라이브러리
- Object -> JSON타입의 String으로 변환
- JSON타입의 String -> Object로 변환
- Spring은 3.0버전 이후로 Jacskon과 관련된 API를 제공
- SpringBoot의 starter-web에서는 default로 Jackson 관련 라이브러리들을 제공
- = 이미 External Libraries에 jackson이 있는 걸 확인가능
- = 따로 build.gradle에 추가하지 않아도 됨
- Java의 객체를 그냥 반환하면 Spring에서 내부적으로 처리
- 하지만, 직접 JSON 데이터를 처리해야하는 경우에는 Jackson 라이브러리의 ObjectMapper를 사용
1. Object To JSON : objectMapper.writeValueAsString()
objectMapper.writeValueAsString(star)
package com.sparta.springmvc;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sparta.springmvc.response.Star;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
public class JacksonTest {
@Test
@DisplayName("Object To JSON : get Method 필요")
void test1() throws JsonProcessingException {
//1. Star Object 생성
Star star = new Star("Robbie", 95);
//2. Jackson 라이브러리의 ObjectMapper사용
ObjectMapper objectMapper = new ObjectMapper();
//3. 파라미터 값으로 반환하고 싶은 Object넣기 = JSON으로 변환해줌
String json = objectMapper.writeValueAsString(star);
System.out.println("json = " + json);
}
}
- 이렇게 JSON형태의 String으로 변환된 것을 확인이 가능!
만약, Star class에 @Getter가 없었다면!
No serializer 이라는 오류가 뜸 ( Object ro JSON하는 과정= serializer 직렬화)= ObjectMapper를 사용할때는 @Getter가 꼭 필요하다!
2. JSON To Object : ObjectMapper.readValue( , )
주의! 꼭 기본 생성자 & (get OR set) Method 필요 !!
ObjectMapper.readValue(json, Star.class)
@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생성
//(JSON, 어떤class(객체)로 매핑 할 건지)
Star star = objectMapper.readValue(json, Star.class);//Star라는 객체를 만들거라 .class를 붙임
System.out.println("star.getName() = " + star.getName());
System.out.println("star.getName() = " + star.getAge());
}
만약, Star class에 기본생성자가 없었다면!
- no Creaters, like default constructor, exist : 기본 생성자가 없어요
- cannot deserialize : 역직렬화(JSON To Object)가 안돼요
Star class에 @Getter 혹은 @Setter가 없었다면!
- Unrecongnized field "name" : name이라는 filed를 찾을 수 없습니다
'Spring > Springboot-Intellij' 카테고리의 다른 글
[SpringBoot] JPA CORE - JPA란 무엇일까? (0) | 2025.01.31 |
---|---|
[SpringBoot] Spring MVC - Path Variable과 Request Param (0) | 2025.01.30 |
[SpringBoot] Spring MVC - 데이터를 Client에 반환하는 방법(JSON), RestController (0) | 2025.01.30 |
[SpringBoot] Spring MVC - 정적 페이지(thymeleaf, redirect, template)와 동적 페이지(Model) (0) | 2025.01.29 |
[SpringBoot] Spring MVC - 인텔리제이(IntelliJ)를 이용하여 Controller생성, 이해하기 (0) | 2025.01.29 |