티스토리 뷰
프로그래밍/JAVA
(Java) Gson 사용시 ZonedDateTime JSON Serialize/Deserialize 방법
rlawlstjd007 2020. 2. 20. 22:41들어가며
-
Gson을 사용하여
ZonedDateTime
객체를 Serialize/Deserialize 하는 경우가 있다.public void test() { String json = new GsonBuilder().create().toJson(ZonedDateTime.now()); ZonedDateTime dateTime = new GsonBuilder().create().fromJson(json, ZonedDateTime.class); }
-
위와 같이 기본 세팅으로 실행할 경우 오류가 발생한다.
java.lang.RuntimeException: Failed to invoke java.time.ZoneId() with no args
-
이에 대한 해결방법을 공유하고자 한다.
※Gson 사용법은 아래 이전 글을 참고해주세요.
해결방법
-
ZonedDateTime
의 Serializer/Deserializer를 별도로 만들어줘야 한다.public class ZonedDateTimeTypeAdaptor implements JsonSerializer<ZonedDateTime>, JsonDeserializer<ZonedDateTime> { @Override public ZonedDateTime deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { try { final String dateTimeString = json.getAsString(); return ZonedDateTime.parse(dateTimeString); } catch (Exception e) { throw new JsonParseException("Failed to new instance", e); } } @Override public JsonElement serialize(ZonedDateTime src, Type typeOfSrc, JsonSerializationContext context) { return new JsonPrimitive(src.format(DateTimeFormatter.ISO_INSTANT)); } }
-
이후
GsonBuilder
를 생성할 때 만들었던 Serializer/Deserializer를 TypeAdapter로 등록해줘야 한다.private static GsonBuilder getGsonBuilder() { final GsonBuilder builder = new GsonBuilder(); builder.registerTypeAdapter(ZonedDateTime.class, new ZonedDateTimeTypeAdaptor()); return builder; }
끝으로
이 글이 도움이 되었다면, Google 광고 한번씩 클릭 부탁 드립니다. 🙏🙏🙏
광고 클릭은 많은 힘이 됩니다!
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
(Java) JVM 이해하기 - 더 자바, 코드를 조작하는 다양한 방법 (0) | 2020.03.04 |
---|---|
(Java) Arrays.asList() 사용시 UnsupportedOperationException 에러 발생 해결 방법 (0) | 2020.02.28 |
(Java) 폴더 자체를 Zip으로 압축하는 방법 (1) | 2020.02.19 |
(Java) Java 문자 메시지 발송 기능 구현 방법 (3) | 2020.02.15 |
(JavaFX) Chart에 값(series)이 많을 때 UI 성능 이슈 해결 방법 (0) | 2020.02.15 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- JavaFX 종료
- effectivejava
- 일본 자전거 여행
- JavaFX Window Close
- intelij
- 자전거
- 이펙티브
- 텐트
- 일본 여행
- 이펙티브 자바
- 스프링부트
- effective java
- 일본 배낭여행
- JavaFX
- 자전거 여행
- 방통대 과제물
- JavaFX 테이블뷰
- 배낭여행
- JavaFX Table View
- TableView
- 자바
- 배낭 여행
- 일본여행
- windows
- java
- Java UI
- git
- 이펙티브자바
- 인텔리제이
- springboot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함