JSON 형식 사용하기
✒️ 2025-05-28 11:46 내용 수정
JSON 라이브러리
- jackson databind 라이브러리를 사용해서 Java의 객체, map, list 데이터를 json 형식으로 변환할 수 있다.
라이브러리 추가 및 사용
- 프로젝트 사전 설정 : Annotation 기반 설정 파일#프로젝트 설정에 작성한 내용대로 프로젝트의 사전 설정을 먼저 진행한다.
- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind 에 접속해서 원하는 버전을 선택한 후 Maven 항목을 복사해서 프로젝트의 pom.xml의 dependancies에 추가한다.
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
- src/main/resources 폴더에 dto 패키지를 만들고, TestDTO를 만든다. 테스트를 위해 클래스에는 이름, 나이, 성별 필드를 만든다.
package dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class TestDTO {
private String name;
private int age;
private String gender;
}
- src/main/java에 JsonTestController 클래스를 만든다. 이 클래스에서 TestDTO 클래스 객체를 생성하고 필드에 저장할 정보를 넣은 후 객체를 반환한다.
package controller;
import java.util.ArrayList;
import java.util.HashMap;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import dto.TestDTO;
@Controller
public class JsonTestController {
@RequestMapping("/dto_to_json")
@ResponseBody
public TestDTO dtoJson() {
TestDTO test = new TestDTO();
test.setName("홍길동");
test.setAge(30);
test.setGender("남성");
return test;
}
@RequestMapping("/map_to_json")
@ResponseBody
public HashMap<String, Integer> mapJson() {
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("고길동", 40);
map.put("이길동", 20);
return map;
}
@RequestMapping("/list_to_json")
@ResponseBody
public ArrayList<String> listJson() {
ArrayList<String> list = new ArrayList<String>();
list.add("사과");
list.add("딸기");
list.add("수박");
return list;
}
}
- ServletContext에 JsonTestController 객체 Bean을 생성한다.
package mvc;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import controller.JsonTestController;
@Configuration
@EnableWebMvc
//@ComponentScan() 자동 스캔 대신 직접 추가했다.
public class ServletContext implements WebMvcConfigurer{
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
@Bean
public JsonTestController jsonTestController() {
return new JsonTestController();
}
}
- 클래스들 생성이 완료되면 프로젝트를 실행하고, JsonTestController에서 mapping 했던 url을 입력해 결과를 확인한다.
- 클래스 객체 -> JSON
- HashMap -> JSON
- ArrayList -> JSON