Define a customer DateTimeFormatter, then use the specific formatter that you want in defining a custom serializer/deserializer classes, both of which are really only one line of code each.
======================== Foo.java ==========================
package scratch;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
// My JSON Serializer/Deserializer classes
import json.MeetingDateDeserializer;
import json.MeetingDateSerializer;
import json.MeetingIDDeserializer;
import json.MeetingIDSerializer;
import json.MeetingShortDateDeserializer;
import json.MeetingShortDateSerializer;
import json.MeetingTitleDeserializer;
import json.MeetingTitleSerializer;
@JsonIgnoreProperties(ignoreUnknown = true)
public class Foo {
static public final DateTimeFormatter meetingTitleFormatter = DateTimeFormatter.ofPattern("dd MMMM yyyy");
static public final DateTimeFormatter meetingIDFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");
static public final DateTimeFormatter meetingDateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
static public final DateTimeFormatter meetingShortDateFormatter = DateTimeFormatter.ofPattern("yyyy MMM dd");
static public final DateTimeFormatter meetingLongDateFormatter = DateTimeFormatter.ofPattern("yyyy MMMM dd");
@JsonDeserialize(using = MeetingIDDeserializer.class)
@JsonSerialize(using = MeetingIDSerializer.class)
@JsonProperty("MeetingID")
private LocalDate meetingID;
@JsonDeserialize(using = MeetingDateDeserializer.class)
@JsonSerialize(using = MeetingDateSerializer.class)
@JsonProperty("MeetingDate")
private LocalDate meetingDate;
@JsonDeserialize(using = MeetingTitleDeserializer.class)
@JsonSerialize(using = MeetingTitleSerializer.class)
@JsonProperty("MeetingTitle")
private LocalDate meetingTitle;
@JsonDeserialize(using = MeetingShortDateDeserializer.class)
@JsonSerialize(using = MeetingShortDateSerializer.class)
@JsonProperty("MeetingShortDate")
private LocalDate meetingShortDate;
....
======================== MeetingShortDateDeserializer.java =====================================
import static scratch.Foo.meetingShortDateFormatter;
import java.io.IOException;
import java.time.LocalDate;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
public class MeetingShortDateDeserializer extends StdDeserializer<LocalDate> {
private static final long serialVersionUID = 1L;
protected MeetingShortDateDeserializer() {
super(LocalDate.class);
}
@Override
public LocalDate deserialize(JsonParser jsonParser, DeserializationContext context) throws IOException, JsonProcessingException {
return LocalDate.parse(jsonParser.readValueAs(String.class), meetingShortDateFormatter);
}
========================= MeetingShortDateDeserializer.java ==================================
import static scratch.Foo.meetingShortDateFormatter;
import java.io.IOException;
import java.time.LocalDate;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
public class MeetingShortDateDeserializer extends StdDeserializer<LocalDate> {
private static final long serialVersionUID = 1L;
protected MeetingShortDateDeserializer() {
super(LocalDate.class);
}
@Override
public LocalDate deserialize(JsonParser jsonParser, DeserializationContext context) throws IOException, JsonProcessingException {
return LocalDate.parse(jsonParser.readValueAs(String.class), meetingShortDateFormatter);