Spring 7. 데이터를 Client에 반환하기

김창민·2024년 8월 12일

BE

목록 보기
27/50

html/css/js(뷰)를 반환하던 시기가 지나고, JSON 형태의 데이터를 반환하는게 요즘

JSON 데이터 반환

String

JSON은 JS 형식이기 때문에 String 타입으로 변환해서 사용해야한다. 이를 위해선 @ResponseBody를 사용하면 된다.

방법 1. String으로 반환

return "{\"name\":\"Robbie\",\"age\":95}";

방법 2. 클래스로 반환

return new Star("Robbie", 95);
이 방법은 Spring에서 Java의 객체를 JASON으로 변환해주기 때문에 가능하다.

@RestController

뷰를 반환하기 위해서 @Controller 어노테이션을 사용하고, @ResponseBody를 이용해 String을 반환했는데, 뷰를 반환하지 않는다면 Controller에 ResponseBody가 결합된 @RestController를 사용하면 된다.

이를 사용하면 @ResponseBody를 사용하지 않고 String형을 반환할 수 있게 된다.

Jackson

Jackson은 JSON 구조를 처리해주는 라이브러리다.
Object를 JSON 형태의 String으로 변환해 줄 수 있으며, 반대로 JSON 형태의 String을 Object로 변환해줄 수 있다.

Spring 3.0 이후로 Jackson 관련 API가 내장되어서 그냥 사용하면 된다.

Object -> JSON

Star star = new Star("Robbie", 95);
ObjectMapper objectMapper = new ObjectMapper(); 
String json = objectMapper.writeValueAsString(star);
System.out.println("json = " + json);

변환 객체 objectMapper를 이용해서 객체인 star을 JSON으로 변화시키는 모습이다.
사용되는 Method는 writeValueAsString()
이때, 해당 object 즉, star에 get Method가 필요한데 @getter를 써놨으면 상관없다.

JSON -> Object

String json = "{\"name\":\"Robbie\",\"age\":95}"; 
ObjectMapper objectMapper = new ObjectMapper(); 

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

변환 객체 objectMapper를 이용해서 JSON String을 객체인 star로 변화시키는 모습이다.
사용되는 Method는 readValue()인데, 첫 파라미터는 Json, 두번째는 변화 대상 object의 clss타입을 사용한다.

이때, 해당 object 즉, star에 기본 생성자와 get 혹은 set이 필요한데 어노테이션을 입력했으면 상관없다.

profile
일일 회고 : https://rlackdals981010.github.io/

0개의 댓글