Serialization for Java Calendar Serialization for Java Calendar json json

Serialization for Java Calendar


From JSON to Calendar

Create a JsonSerializer:

public class CalendarSerializer extends JsonSerializer<Calendar> {    private SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");    @Override    public void serialize(Calendar calendar, JsonGenerator jsonGenerator,                          SerializerProvider serializerProvider) throws IOException {        String dateAsString = formatter.format(calendar.getTime());        jsonGenerator.writeString(dateAsString);    }}

And then use it:

@JsonSerialize(using = CalendarSerializer.class)private Calendar calendar;

From Calendar to JSON

Create a JsonDeserializer:

public class CalendarDeserializer extends JsonDeserializer<Calendar> {    private SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");    @Override    public Calendar deserialize(JsonParser jsonParser,                                DeserializationContext deserializationContext)                                 throws IOException {        String dateAsString = jsonParser.getText();        try {            Date date = formatter.parse(dateAsString);            Calendar calendar = Calendar.getInstance();            calendar.setTime(date);            return calendar;        } catch (Exception e) {            throw new IOException(e);        }    }

And then use it:

@JsonDeserialize(using = CalendarDeserializer.class)private Calendar calendar;


If the only data you need as json is a date, you can using Gson:

JsonObject albums = new JsonObject();albums.addProperty("date", new Date());

if your json instead has more than that, you can sonsider to define your own class and serialze it by adding this method to the defined class:

public String toJson() {        Gson gson = new Gson();        return gson.toJson(this);    }