ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링에서 Jackson 형태로 반환하는 법
    spring/스프링 입문 주차 2024. 1. 18. 09:59

    자바는 직접적으로 Jackson 문법을 가지고 있지 않기 때문에, 직접적으로 Json형태로 반환하고 싶다면

    아래와 같은 String형태로 반환해야 한다.

        public String helloStringJson() {
            return "{\"name\":\"Robbie\",\"age\":95}";
        }

     

    객체를 반환하면 자동으로 json 형태로 반환 해 주기도 한다.

        public Star helloClassJson() {
            return new Star("Robbie", 95);
        }

     

    객체를 반환하는 것이 당연히 더 편해보이지만, 둘다 사용할 일이 있다고 하니 기억하도록 하자.

     


     

    Object 타입을 json 타입으로 변환하는 방법

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

     

    json 타입을 Object 타입으로 변환하는 방법

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

     

    json 타입으로 문자열을 저장할 땐, key값을 객체의 필드와 정확하게 일치하지 않으면 에러가 난다.

    또한 @DisplayName에 적어 놓았듯이, 기본 생성자, getter, setter 의 유무에 따라 에러가 나는 경우도 있다는걸 명심하자. 

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

    'spring > 스프링 입문 주차' 카테고리의 다른 글

    HTTP 데이터를 객체로 처리하는 방법  (0) 2024.01.18
    PathVariable과 ReqestParam  (0) 2024.01.18
    Controller 이해하기  (0) 2024.01.17
    스프링 MVC란?  (0) 2024.01.17
    간단한 Postman 사용법  (0) 2024.01.17
Designed by Tistory.