Skip to content

Use DeserializationContext.handleWeirdXxxValue() for datetime deserializers #65

Closed
@remal

Description

@remal

Lets look on LocalDateTimeDeserializer (for example):

public LocalDateTime deserialize(JsonParser parser, DeserializationContext context) throws IOException {
    if (parser.hasTokenId(JsonTokenId.ID_STRING)) {
        String string = parser.getText().trim();
        // ...
        try {
            // ...
            return LocalDateTime.parse(string, _formatter);
        } catch (DateTimeException e) {
            _rethrowDateTimeException(parser, context, e, string);
        }
    }
    // ...
}

Please change it to:

public LocalDateTime deserialize(JsonParser parser, DeserializationContext context) throws IOException {
    if (parser.hasTokenId(JsonTokenId.ID_STRING)) {
        String string = parser.getText().trim();
        // ...
        try {
            // ...
            return LocalDateTime.parse(string, _formatter);
        } catch (DateTimeException e) {
            try {
                return context.handleWeirdStringValue(LocalDateTime.class, string, e.getMessage());
            } catch (Throwable t) {
                t.initCause(e);
            }
        }
    }
    // ...
}

Why do I need this? I want to create a module that defines some DeserializationProblemHandlers that allow to deserialize datetime types using several formats. Now I need to create mix-ins to override datetime deserializers.

Please apply this change to all deserializers and key deserializers.

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