안녕하세요! 이번에는 Spring Boot에서 JSON 형태로 return을 해주는 방법에 대해 알아보겠습니다.
정말 간단하기 때문에 쉽게 따라오실 수 있습니다!
💃 준비 - DTO 만들기
예시를 보여주기 위해 간단한 DTO를 만들어줍니다.
@Setter
@Getter
public class Blog {
private String title;
private String content;
}
👀 어노테이션 사용하기
컨트롤러 단에서 JSON 객체를 문자열로 간편하게 직렬화 할 수 있게 도와주는 두 어노테이션을 소개합니다.
@RestController
데이터를 전송하기 위한 컨트롤러로 사용하며,@RestController
를 사용하면 기본으로 하위에 있는 메소드들은 모두 @ResponseBody
를 가지게 됩니다.
@RestController
public class TestController {
@RequestMapping("/test1")
public Blog test1(){
Blog blog = new Blog();
blog.setTitle("테스트1");
blog.setContent("테스트1 내용");
return blog;
}
}
이런 식으로 클래스 위에 @RestController
어노테이션을 붙여주면 됩니다.
@ResponseBody
이 어노테이션은 @Controller
를 가지고 있지만, 텍스트를 반환하고 싶을 때 사용합니다. 아래 코드를 보시면 쉽게 이해가 가능합니다.
@Controller
public class TestController {
@ResponseBody
@RequestMapping("/test2")
public Blog test2(){
Blog blog = new Blog();
blog.setTitle("테스트2");
blog.setContent("테스트2 내용");
return blog;
}
}
🦕 GSON 사용하기
모든 것을 @RestController
와 @ResponseBody
로 해결할 수 있으면 정말 좋지만, JSON 객체를 직접 만들어야 할 때가 발생하는데, 그럴 때 사용하는 방법입니다.
가장 먼저 의존성을 추가해줍니다.
// https://mvnrepository.com/artifact/com.google.code.gson/gson
compile group: 'com.google.code.gson', name: 'gson', version: '2.7'
(만약 Maven을 사용한다면 링크에서 확인할 수 있습니다.)
@Controller
public class TestController {
@ResponseBody
@RequestMapping("/test3")
public String test3(){
JsonObject obj =new JsonObject();
obj.addProperty("title", "테스트3");
obj.addProperty("content", "테스트3 내용");
JsonObject data = new JsonObject();
data.addProperty("time", "12:00");
obj.add("data", data);
return obj.toString();
}
}
JsonObject의 addProperty
를 사용해서 쉽게 JSON을 커스텀 할 수 있고, 객체 안에 객체를 넣을 수도 있습니다. 이 포스팅에서는 소개하지 못했지만, JsonArray를 사용하면 배열도 담을 수 있습니다.
이렇게 해서 제가 아는 JSON 형식으로 응답 보내는 방법에 대한 포스팅이 끝났습니다!
혹시 보충하고 싶은 내용이나 잘못된 내용이 있으면 지적해주시면 감사하겠습니다 :)
'Backend > SpringBoot' 카테고리의 다른 글
SpringBoot의 @IdClass를 사용해서 복합 Primary Key 적용하기 (0) | 2020.01.22 |
---|---|
SpringBoot로 캐싱(Caching)하기 (0) | 2020.01.12 |
SpringBoot와 Thymeleaf를 이용하여 페이징하기 (1) | 2019.12.11 |
Spring Boot Map Struct Gradle 사용해보기 (3) | 2019.11.18 |
Spring Boot Validation을 사용하여 요청 값 검증하기 (0) | 2019.11.07 |