반응형
11-08 05:45
- Today
- Total
Link
개발하는 고라니
[Spring MVC] JSON 출력하기 본문
반응형
* 서버쪽에서 객체를 반환하면 클라이언트에서 객체 값을 받아서 문자열로 사용할 수 있게 한다.
# 데이터를 구분하기 위한 표현 방법
< XML, CSV, JSON > 각 포맷을 간단하게 살펴본다.
1. CSV
1, hello world
2, Java
3, simple csv
- 서버쪽에서 클라이언트쪽에 보낼 때 ','(콤마)로 구분된 데이터 형태로 보내는 것
- ','를 기준으로 왼쪽이 제목인지, 우측이 제목인지 구분하기가 힘들다.
- 데이터를 그룹핑하여 보내기 어렵다는 단점이 있다.
2. XML
<list>
<board bno="1" title="hello world" />
<board bno="2" title="Java" />
</list>
- CSV를 보완하기 위해 나온 메타데이터라고 하는 데이터의 데이터, 즉 XML 형식으로 보내는 것
- 데이터를 중첩해서 더 큰 그룹으로 묶는다고 해도 '태그'라는 것으로 중첩할 수 있어서 좋다.
- 하지만 태그가 데이터를 심기에는 무겁고 성능면에서도 그리 좋지만은 않다.
3. JSON(Javascript Object Notation)
[
{"bno":1, "title":"hello world"},
{"bno":2, "title":"Java"}
]
- 데이터를 설명할 수 있는 메타데이터도 있으면서 데이터 자체가 경량화되어있는 JSON
- CSV와 XML의 장점을 모두 갖는다.
# @RestController에서 적용해보기
@RestController("apiController")
@RequestMapping("/api")
public class APIController {
@Setter(onMethod_ = @Autowired)
BoardService service;
@GetMapping("/list")
public List<BoardVO> list(){
return service.getList(101, new Pager());
}
}
- BoardService는 게시물 목록을 반환하는 서비스를 제공하는 인터페이스이다.
- 단지 객체를 반환해도 JSON으로 변환해줄까?
- 놀랍게도 List<BoardVO> 객체가 JSON으로 자동변환되어 출력되었다.
※ 조금 더 명시적으로 사용하고 싶다면 한줄 추가하면 된다.
@RestController("apiController")
@RequestMapping(value="/api", produces = {MediaType.APPLICATION_JSON_UTF8_VALUE})
public class APIController {
@Autowired
BoardService service;
@GetMapping("/list")
public List<BoardVO> list(){
return service.getList(101, new Pager());
}
}
@RequestMapping 안에 'produce'부분에 JSON으로 생성하겠다 라고 명시하면 더 명확하게 알 수 있다.
반응형
'Framework > Spring' 카테고리의 다른 글
[Spring] 크롤링된 이미지 다운로드 (0) | 2020.12.16 |
---|---|
[Spring] 크롤링 해온 정보 DB에 저장 (0) | 2020.12.14 |
[Spring MVC] @RestController String의 한글 처리 (0) | 2020.12.08 |
[Spring MVC] Web Socket(웹 소켓)과 Chatting(채팅) (11) | 2020.12.03 |
[Spring] 메일 송신 (0) | 2020.12.02 |
Comments