반응형
11-08 05:45
Today
Total
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
관리 메뉴

개발하는 고라니

[Spring MVC] JSON 출력하기 본문

Framework/Spring

[Spring MVC] JSON 출력하기

조용한고라니 2020. 12. 8. 02:02
반응형

 * 서버쪽에서 객체를 반환하면 클라이언트에서 객체 값을 받아서 문자열로 사용할 수 있게 한다.

# 데이터를 구분하기 위한 표현 방법

< 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으로 변환해줄까?

/api/list 호출 결과

 - 놀랍게도 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으로 생성하겠다 라고 명시하면 더 명확하게 알 수 있다.

반응형
Comments