728x90
입력 JSON
Controller에서 JSON형태로 전달받은 데이터를 Date 받아야할 일이 생겼습니다.
{
"name": "choi",
"age": 1,
"birthdayYearMonthDay": "2020.01.02",
}
이때 위와같이 Date format으로 처리해야할 String이 들어온다고 했을 때,
String을 그래돌 받는 것보다 java.util.Date 포맷으로 변환한다면 편하게 DB접근에 있어서 편하게 사용할 수 있을 것입니다.
pom.xml
//생략
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>5.2.2.RELEASE</spring.version>
<jackson2.version>2.10.2</jackson2.version>
</properties>
//생략
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson2.version}</version>
</dependency>
//생략
pom.xml 파일입니다.
Spring 버전은 5.2.2 이며, jackson 라이브러리 버전은 2.10.2 입니다..
jackson-databind을 사용하면 JSON콘텐츠를 Java객체로 손쉽게 맵핑할 수 있습니다.
javadoc.io/doc/com.fasterxml.jackson.core/jackson-databind/2.10.2/index.html
VO(Value Object)
package kr.or.connect.reservation.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
public class UserVo {
private String name;
private int age;
@JsonFormat(pattern = "yyyy.MM.dd") //데이터 포맷 변환
private Date birthdayYearMonthDay;
public String getName() {
return name;
}
public int getAge() {
return age;
}
public Date getBirthdayYearMonthDay() {
return birthdayYearMonthDay;
}
@Override
public String toString() {
return "UserVo [name=" + name + ", age=" + age + ", birthdayYearMonthDay="
+ birthdayYearMonthDay + "]";
}
}
먼저 VO(Value Object) 객체를 만들어 줍니다. 기존에 만들어져 있는 DTO나 Entitiy객체를 사용해도 됩니다.
@JsonFormat 어노테이션을 사용하여 Date Formatter을 직접 입력하여 java.util.Date으로 바꾸어 줍니다.
예시1) "2020.01.02" => yyyy.MM.dd
예시2) "2020-12-24 16:28:27.0" => "yyyy-MM-dd HH:mm:ss.S"
Controller
package kr.or.connect.reservation.controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import kr.or.connect.reservation.vo.UserVo;
@RestController
@RequestMapping("/api/test")
public class MainController {
@PostMapping
public UserVo testApilist(@RequestBody UserVo uservo) {
System.out.println(uservo.toString() + uservo.getBirthdayYearMonthDay().getClass());
return uservo;
}
}
테스트
println 으로 확인한결과 제대로 java.util.Date 형태로 값이 저장된 것을 볼 수 있습니다.
또한 Controller에서 객체만 반환했을 뿐인데, 응답 포맷 또한 JSON으로 받은 것을 볼 수 있습니다.
728x90
'웹 프레임워크 > Spring' 카테고리의 다른 글
프로젝트 D. Spring Security를 이용한 로그인하기 및 예약 관련 web API 만들기 - 코드 리뷰 및 회고(웹 백엔드) (0) | 2021.01.25 |
---|---|
Spring Controller에서 list형태가 포함되어 있는 json 포맷 받기, 응답 (0) | 2021.01.16 |
프로젝트C. 메인, 상세보기 관련 web API 만들기 코드 리뷰 및 회고 (boostcourse 웹 백엔드) (0) | 2021.01.11 |
프로젝트B. 방명록 만들기 코드 리뷰 및 회고 (boostcourse 웹 백엔드) (0) | 2020.12.24 |
프로젝트A. 명함 관리 프로그램 코드 리뷰 및 회고 (boostcourse 웹 백엔드) (0) | 2020.12.23 |