반응형

 

Entity나 DTO를 만들지 않고 controller-service-mapper 작업을 할 때

 

Date Format을 보니 yyyy-MM-dd'T'HH:mm:ss 형식이었다.

 

private final Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();

 

setDateFormat을 통하여 원하는 date 포맷의 값을 받아서 Date 객체로 변환할 수 있었다.

 

 

또는 아래와 같은 객체와 클래스를 만들어서 원하는 Format으로 지정하여도 된다.

 

GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Date.class, new GsonDateFormatAdapter());

 

public class GsonDateFormatAdapter implements JsonSerializer<Date>, JsonDeserializer<Date> {

  private final DateFormat dateFormat;

  public GsonDateFormatAdapter() {
    dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.KOREA);
    dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
  }

  @Override
  public synchronized JsonElement serialize(Date date, Type type, JsonSerializationContext jsonSerializationContext) {
    return new JsonPrimitive(dateFormat.format(date));
  }

  @Override
  public synchronized Date deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) {
    try {
      return dateFormat.parse(jsonElement.getAsString());
    } catch (ParseException e) {
      throw new JsonParseException(e);
    }
  }
}

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기