OneBasedMonthSerializer.java
package com.fasterxml.jackson.datatype.jsr310.ser;
import java.io.IOException;
import java.time.Month;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.SerializerProvider;
/**
* @since 2.17
*/
public class OneBasedMonthSerializer extends JsonSerializer<Month> {
private final JsonSerializer<Object> _defaultSerializer;
@SuppressWarnings("unchecked")
public OneBasedMonthSerializer(JsonSerializer<?> defaultSerializer)
{
_defaultSerializer = (JsonSerializer<Object>) defaultSerializer;
}
@Override
public void serialize(Month value, JsonGenerator gen, SerializerProvider ctxt)
throws IOException
{
// 15-Jan-2024, tatu: [modules-java8#274] This is not really sufficient
// (see `jackson-databind` `EnumSerializer` for full logic), but has to
// do for now. May need to add `@JsonFormat.shape` handling in future.
if (ctxt.isEnabled(SerializationFeature.WRITE_ENUMS_USING_INDEX)) {
gen.writeNumber(value.ordinal() + 1);
return;
}
_defaultSerializer.serialize(value, gen, ctxt);
}
}