In jackson-module-kogera, there are several intentional design changes that are destructive.
This page summarizes them.
The KotlinAnnotationIntrospector::hasRequiredMarker function in jackson-module-kotlin has several problems.
In kogera, the specification has been revised as follows.
- If
required = trueis specified in theJsonPropertyannotation, the result is preferred.- This should not be overridden, as it will not be
trueunless explicitly specified by the user. - This implementation follows the basic policy of
Jackson.
- This should not be overridden, as it will not be
- Processing on
fieldthat has accessors are skipped. - The
FAIL_ON_NULL_FOR_PRIMITIVESoption does not affect the results.- In
kogera, the deserialization behavior is not affected by whether the argument is of typeprimitiveor not.
- In
- The
nullToEmptyoption only affects deserialization.- As for
JvmField, there was no way to distinguish between contexts, so that option affects serialization.
- As for
In jackson-module-kotlin, some code has been inadvertently released.
If code is released inadvertently, it will be difficult to change it considering dependencies.
Therefore, in kogera, explicitApi is enabled and all but the minimum code is kept private.
I will consider making the classes public again when we receive requests for them.
Because jackson-module-kotlin is a framework with a long history, some old code and options remain.
In kogera, those options have been removed.