The LocalTime
deserialization can be handled using custom TypeAdapter
. Please refer LocalTimeDeserializer
class.
1) Date format is set as "yyyy.MM.dd"
2) org.joda.time.LocalTime - Formatter "HH:mm"
Main Method:-
public static void main(String[] args) {
String jsonString = "{\"auditorium\":\"506\",\"beginLesson\":\"10:30\",\"date\":\"2016.09.12\",\"dayOfWeekString\":\"Monday\",\"discipline\":\"Math\",\"endLesson\":\"11:10\",\"kindOfWork\":\"Lesson\",\"lecturer\":\"John Smith\"}";
Gson gson = new GsonBuilder().setDateFormat("yyyy.MM.dd")
.registerTypeAdapter(LocalTime.class, new LocalTimeDeserializer()).create();
Auditorium auditorium = gson.fromJson(jsonString, Auditorium.class);
System.out.println(auditorium.toString());
}
Auditorium Class:-
public class Auditorium implements Serializable{
private static final long serialVersionUID = 6752903482239784124L;
private final DateTimeFormatter fmt = DateTimeFormat.forPattern("HH:mm");
private String auditorium;
private LocalTime beginLesson;
private Date date;
private String dayOfWeekString;
private String discipline;
private LocalTime endLesson;
private String kindOfWork;
private String lecturer;
@Override
public String toString() {
return "Auditorium [auditorium=" + auditorium + ", beginLesson=" + beginLesson.toString(fmt) + ", date=" + date
+ ", dayOfWeekString=" + dayOfWeekString + ", discipline=" + discipline + ", endLesson=" + endLesson.toString(fmt)
+ ", kindOfWork=" + kindOfWork + ", lecturer=" + lecturer + "]";
}
... getter and setters
}
LocalTime Deserializer:-
public class LocalTimeDeserializer implements JsonDeserializer<LocalTime> {
final DateTimeFormatter fmt = DateTimeFormat.forPattern("HH:mm");
@Override
public LocalTime deserialize(JsonElement paramJsonElement, Type paramType,
JsonDeserializationContext paramJsonDeserializationContext) throws JsonParseException {
return LocalTime.parse(paramJsonElement.getAsString(), fmt);
}
}
Output:-
Auditorium [auditorium=506, beginLesson=10:30, date=Mon Sep 12 00:00:00 BST 2016, dayOfWeekString=Monday, discipline=Math, endLesson=11:10, kindOfWork=Lesson, lecturer=John Smith]