본문 바로가기
Spring

[Spring] JSON 형식의 데이터로 변환하기

by bkuk 2023. 4. 30.

JSON으로 변환하기

시스템이 복잡해지면서 다른 시스템과 정보를 주고받을 일이 발생하는데, 이때 데이터 교환 포맷으로 JSON을 사용할 수 있다. 검색한 글 목록을 JSON 형식의 데이터로 변환하여 브라우저에 출력하려면 어떻게 해야할까?

[{
	"seq": 2,
	"title": "zzzxcxzcz",
	"writer": "xx",
	"content": "\t\tccczxczxcxzcc",
	"regDate": 1682607600000,
	"cnt": 0
}, {
	"seq": 1,
	"title": "1112332131",
	"writer": "22",
	"content": "\t\t\t5141332144\t33134123",
	"regDate": 1682607600000,
	"cnt": 0
}]

 

Jackson2 라이브러리 다운로드

pom.xml 파일을 열어서 jackson2 라이브러리를 다운로드 받을 수 있도록 <dependency>를 추가한다.

<!-- Jackson2 -->		
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.4</version>
</dependency>

 

HttpMessageConvertor 등록

응답 결과를 HTML이 아닌 JSON이나 XML로 변환하여 HTTP 바디에 저장하려면 스프링에서 제공하는 변환기(Converter)를 사용해야 한다. 스프링은 HttpMessageConverter를 구현한 다양한 변환기를 제공한다. 

이 변환기를 사용하면 자바 객체를 다양한 타입으로 변환하여 HTTP 응답 바디를 설정할 수 있다.

 

<mvc:annotation-driven></mvc:annotation-driven>

스프링 설정 파일에 위와 같이 엘리먼트를 추가하면, HttpMessageConverter를 구현한 모든 변환기가 생성된다.

 

Controller 클래스에 해당 요청을 처리할 메서드를 아래 같은 형식의 에노테이션으로 설정하면 된다.

@RequestMapping("/dataTransform.do")
@ResponseBody
public List<BoardVO> dataTransform(BoardVO vo) {
    vo.setSearchCondition("TITLE");
    vo.setSearchKeyword("");
    List<BoardVO> boardList = boardService.getBoardList(vo);
    return boardList;
}

@ResponseBody라는 어노테이션은 자바 객체를 Http 응답 프로토콜의 몸체로 변환하기 위해 사용된다.

 

@JsonIgnore
public String getSearchCondition() {
    return searchCondition;
}
@JsonIgnore
public MultipartFile getUploadFile() {
    return uploadFile;
}

@JsonIgnore 라는 어노테이션은 자바 객체를 JSON으로 변환할 때, 특졍 변수를 변환에서 제외시키기 위해 사용된다.

 

댓글