티스토리 뷰
Date 형태를 LocalDateTime으로 변경 한 후
원래 yyyy-MM-dd HH:mm:ss 로 잘보이던 형태가 json으로 바껴서 나와서 당황
{ "date": { "year": 2020, "month": 11, "day": 22 }, "time": { "hour": 17, "minute": 15, "second": 57, "nano": 0 } }
찾아보니 LocalDateTime과 LocalDate 둘다 해당하는듯
gson사용시에 해결하는 방법이다.
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import java.lang.reflect.Type;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class LocalDateTimeSerializer implements JsonSerializer<LocalDateTime> {
private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@Override
public JsonElement serialize(LocalDateTime localDateTime, Type srcType, JsonSerializationContext context) {
return new JsonPrimitive(formatter.format(localDateTime));
}
}
configure을 하나 만든 후
gson을 선언하는 부분에서
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer());
Gson gson = gsonBuilder.setPrettyPrinting().create();
이렇게 선언해서 쓰면 된다.
jackson은 어노테이션 쓰면 쉽게 되는거 같은데 gson은 아닌듯..
이거는 Serialize할때 쓰면 되고 Deserialize 일때는 아래 사이트 참고
참고 : www.javaguides.net/2019/11/gson-localdatetime-localdate.html
'Spring boot' 카테고리의 다른 글
artifact contains illegal characters intellij (0) | 2020.11.24 |
---|---|
springboot vue.js 연동시 put, delete 403에러 Invalid CORS request 나면서 안될 때 (0) | 2020.11.22 |
IntelliJ로 메인 메소드를 실행했는데 그레이들로 실행한것처럼 로그가 출력될 때 (0) | 2020.11.02 |
@SpringBootApplication (0) | 2020.10.19 |
jcenter (0) | 2020.10.19 |
댓글