Skip to content

Fail to serialize TemporalAdjuster type with 2.12 #207

Closed
@gokhanoner

Description

@gokhanoner

Starting with 2.12, below code fails & throw exception. I wonder if it's related to FasterXML/jackson-databind#2683

Tested with 2.11.4 & 2.10.5, both serialize successfully.

Note: Adding deprecated jsr310 module also doesn't work.

public class JacksonTest {
    private static ObjectMapper objectMapper;

    @BeforeClass
    public static void setup() {
        objectMapper = JsonMapper.builder()
                .addModules(
                        new JavaTimeModule()
                )
                .build();
    }

    @Test
    public void whenUsingTemporalAdjusterExpectTrue() throws JsonProcessingException {
        TestPojo mrd = new TestPojo();
        System.out.println(objectMapper.writeValueAsString(mrd));
    }

    static class TestPojo {
        private TemporalAdjuster ta;

        TestPojo() {
            this.ta = TemporalAdjusters.firstDayOfMonth();
        }

        public TemporalAdjuster getTa() {
            return ta;
        }

        public void setTa(TemporalAdjuster ta) {
            this.ta = ta;
        }
    }
}

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.temporal.TemporalAdjusters$$Lambda$80/0x0000000800c07840` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling (through reference chain: com.oner.JacksonTest$TestPojo["ta"])

	at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77)
	at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1276)
	at com.fasterxml.jackson.databind.ser.impl.UnsupportedTypeSerializer.serialize(UnsupportedTypeSerializer.java:35)
	at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)
	at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:770)
	at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)
	at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
	at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)
	at com.fasterxml.jackson.databind.ObjectMapper._writeValueAndClose(ObjectMapper.java:4487)
	at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:3742)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions